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 时要注意避免递归调用
相关推荐
金銀銅鐵2 天前
浅解 JUnit 4 第十一篇:@Before 注解和 @After 注解如何发挥作用?
junit·单元测试
金銀銅鐵3 天前
浅解 JUnit 4 第十篇:方法上的 @Ignore 注解
junit·单元测试
郑州光合科技余经理5 天前
代码展示:PHP搭建海外版外卖系统源码解析
java·开发语言·前端·后端·系统架构·uni-app·php
feifeigo1235 天前
matlab画图工具
开发语言·matlab
西岸行者5 天前
学习笔记:SKILLS 能帮助更好的vibe coding
笔记·学习
dustcell.5 天前
haproxy七层代理
java·开发语言·前端
norlan_jame5 天前
C-PHY与D-PHY差异
c语言·开发语言
多恩Stone5 天前
【C++入门扫盲1】C++ 与 Python:类型、编译器/解释器与 CPU 的关系
开发语言·c++·人工智能·python·算法·3d·aigc
QQ4022054965 天前
Python+django+vue3预制菜半成品配菜平台
开发语言·python·django
starlaky5 天前
Django入门笔记
笔记·django