Lua 的 tostring 函数

Lua 的 tostring 函数 是一个内置的基础函数,用于将给定的值转换为字符串表示形式。这个函数在 Lua 5.1 到 Lua 5.4 的所有版本中都可用,是处理数据类型转换时最常用的函数之一。

基本语法:

lua 复制代码
tostring(value)

功能特点:

  1. 对于数字类型,会直接转换为对应的字符串形式:
lua 复制代码
print(tostring(123))    -- 输出 "123"
print(tostring(3.14))   -- 输出 "3.14"
  1. 对于字符串类型,会返回字符串本身:
lua 复制代码
print(tostring("hello")) -- 输出 "hello"
  1. 对于布尔值,会返回 "true""false"
lua 复制代码
print(tostring(true))   -- 输出 "true"
print(tostring(false))  -- 输出 "false"
  1. 对于 nil,会返回 "nil"
lua 复制代码
print(tostring(nil))    -- 输出 "nil"
  1. 对于 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"

应用场景:

  1. 调试输出时查看变量内容
  2. 日志记录时需要将各种数据类型转为字符串
  3. 字符串拼接前的类型转换
  4. 序列化数据前的预处理

注意事项:

  • 对 userdata 类型的转换结果取决于其元表定义
  • 大数字转换时可能会损失精度
  • 自定义 __tostring 时要注意避免递归调用
相关推荐
期待のcode几秒前
Java的多态
java·开发语言
阿波罗8号23 分钟前
《一本书读懂支付》
笔记
证能量少女1 小时前
2026大专Java开发工程师,考什么证加分?
java·开发语言
芒克芒克1 小时前
Java集合框架总结(面试八股)
java·开发语言·面试
顽强卖力1 小时前
第二章:什么是数据分析师?
笔记·python·职场和发展·学习方法
ejjdhdjdjdjdjjsl1 小时前
C#文件流操作技巧
java·开发语言·spring
lkbhua莱克瓦241 小时前
反射3-反射获取构造方法
java·开发语言·反射
wanghowie2 小时前
02.04.01 Java Stream API 进阶指南:从底层实现到性能优化
java·开发语言·性能优化
superman超哥2 小时前
仓颉元编程进阶:编译期计算能力的原理与深度实践
开发语言·后端·仓颉编程语言·仓颉·仓颉语言·仓颉元编程·编译器计算能力
这周也會开心2 小时前
Map集合的比较
java·开发语言·jvm