Lua 的 tostring 函数 是一个内置的基础函数,用于将给定的值转换为字符串表示形式。这个函数在 Lua 5.1 到 Lua 5.4 的所有版本中都可用,是处理数据类型转换时最常用的函数之一。
基本语法:
lua
tostring(value)
功能特点:
- 对于数字类型,会直接转换为对应的字符串形式:
lua
print(tostring(123)) -- 输出 "123"
print(tostring(3.14)) -- 输出 "3.14"
- 对于字符串类型,会返回字符串本身:
lua
print(tostring("hello")) -- 输出 "hello"
- 对于布尔值,会返回
"true"或"false":
lua
print(tostring(true)) -- 输出 "true"
print(tostring(false)) -- 输出 "false"
- 对于
nil,会返回"nil":
lua
print(tostring(nil)) -- 输出 "nil"
- 对于
table等复杂类型,默认返回其内存地址的字符串表示:
lua
local tbl = {}
print(tostring(tbl)) -- 输出类似 "table: 0x7f8e5bc04230"
高级用法:
- 可以通过为
table定义__tostring元方法来自定义输出:
lua
local person = {name = "Alice", age = 25}
setmetatable(person, {
__tostring = function(t)
return "Person: "..t.name..", "..t.age.." years old"
end
})
print(tostring(person)) -- 输出 "Person: Alice, 25 years old"
- 在字符串拼接时会自动调用
tostring:
lua
local num = 42
print("The answer is "..num) -- 自动转换为 "The answer is 42"
应用场景:
- 调试输出时查看变量内容
- 日志记录时需要将各种数据类型转为字符串
- 字符串拼接前的类型转换
- 序列化数据前的预处理
注意事项:
- 对 userdata 类型的转换结果取决于其元表定义
- 大数字转换时可能会损失精度
- 自定义
__tostring时要注意避免递归调用