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 时要注意避免递归调用
相关推荐
YikNjy17 小时前
break和continue
java·开发语言·算法
小+不通文墨17 小时前
把树莓派外接的DHT11接收的温湿度发送到emqx上
经验分享·笔记·嵌入式硬件·学习·树莓派
秋917 小时前
java项目中cpu飙升排查及解决方法
java·开发语言
野生技术架构师17 小时前
牛客网2026最新大厂Java高频面试题精选(附标准答案)
java·开发语言
PH = 717 小时前
JAVA的SPI机制
java·开发语言
IT猿手18 小时前
多目标优化算法:多目标蛇优化算法(Multiple Objective Snake Optimizer,MOSO)(提供MATLAB代码)
开发语言·算法·matlab·动态路径规划·光伏模型参数估计
朔北之忘 Clancy18 小时前
2026 年 3 月青少年软编等考 C/C++ 一级真题解析
c语言·开发语言·c++·青少年编程·题解·考级
小成2023032026518 小时前
C++~01面向对象基础
开发语言·c++
会编程的土豆18 小时前
Go 方法接收者超清晰笔记(类型名 vs 变量名)
开发语言·笔记·golang