1. Lua数据类型概述
Lua作为一门轻量级脚本语言,其数据类型系统设计精巧而实用。与静态类型语言不同,Lua采用动态类型系统,变量本身没有类型,只有值才具有类型特征。这种设计使得Lua在保持灵活性的同时,又能通过合理的类型系统保证程序可靠性。
我在实际项目中最常遇到的八种基本数据类型包括:
- nil(空值)
- boolean(布尔)
- number(数值)
- string(字符串)
- function(函数)
- table(表)
- userdata(用户数据)
- thread(协程)
每种类型都有其特定的使用场景和行为特征。比如table类型就非常灵活,既可以当数组使用,也能实现字典功能,甚至可以用来模拟面向对象编程中的类和对象。
新手容易忽略的是:Lua中所有变量默认都是全局的,除非显式声明为local。这经常导致变量污染问题,建议养成良好习惯,非必要不使用全局变量。
1.1 类型检测与转换
Lua提供了type()函数用于检测值的数据类型。这个函数总是返回一个字符串,包含上述八种类型名称之一。例如:
lua复制print(type("Hello")) -- 输出 "string"
print(type(3.14)) -- 输出 "number"
print(type(print)) -- 输出 "function"
类型转换在Lua中通常是隐式进行的。比如在需要字符串的上下文中使用数字,Lua会自动调用tostring()进行转换。但有些转换需要显式调用函数:
lua复制local num = tonumber("123") -- 字符串转数字
local str = tostring(123) -- 数字转字符串
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 基础数据类型详解
2.1 nil类型
nil类型只有一个值nil,表示"无"或"空"。在Lua中,未初始化的变量默认值为nil,这与许多其他语言不同。nil的主要用途包括:
- 表示变量尚未赋值
- 删除table中的键值对(将值设为nil)
- 作为无效值的标记
lua复制local uninitialized
print(uninitialized) -- 输出 nil
local tbl = {key =
