Appearance
数据类型
Lua 是一种动态类型语言,它的值可以在运行时改变类型。Lua 中有 8 种基本数据类型:
| 数据类型 | 描述 |
|---|---|
| nil | 表示一个未定义的值 |
| boolean | 布尔值,包括 true 和 false |
| number | 数字,双精度浮点数 |
| string | 字符串 |
| table | 表,Lua 中唯一的数据结构 |
| function | 函数 |
| userdata | 用户数据,用于存储 C 数据结构 |
| thread | 线程,用于协同程序 |
nil
nil 表示一个未定义的值,当一个变量被赋值为 nil 时,它会被垃圾回收器回收。
lua
local var = nil
print(var) -- 输出 nilboolean
布尔值只有 true 和 false 两个值。在条件判断中,只有 false 和 nil 被视为假,其他值都被视为真。
lua
local isTrue = true
local isFalse = false
if isTrue then
print("真")
end
if not isFalse then
print("假的反义是真")
endnumber
Lua 中的数字都是双精度浮点数,没有整数类型。
lua
local int = 10
local float = 3.14
local scientific = 1e3 -- 科学计数法,等于 1000
print(int) -- 输出 10
print(float) -- 输出 3.14
print(scientific) -- 输出 1000string
字符串可以用单引号或双引号表示,也可以用 [[ 和 ]] 表示多行字符串。
lua
local str1 = 'Hello'
local str2 = "World"
local str3 = [[
这是
多行字符串
]]
print(str1) -- 输出 Hello
print(str2) -- 输出 World
print(str3) -- 输出多行字符串字符串可以使用 .. 运算符连接:
lua
local str = "Hello " .. "World"
print(str) -- 输出 Hello Worldtable
表是 Lua 中唯一的数据结构,它可以用来表示数组、字典、对象等。
lua
-- 创建一个表
local person = {
name = "张三",
age = 30,
hobbies = {"读书", "旅游"}
}
-- 访问表中的元素
print(person.name) -- 输出 张三
print(person["age"]) -- 输出 30
print(person.hobbies[1]) -- 输出 读书
-- 修改表中的元素
person.age = 31
print(person.age) -- 输出 31
-- 添加新元素
person.gender = "男"
print(person.gender) -- 输出 男
-- 删除元素
person.gender = nil
print(person.gender) -- 输出 nilfunction
函数是 Lua 中的第一类值,可以存储在变量中,作为参数传递,或作为返回值。
lua
-- 定义一个函数
function add(a, b)
return a + b
end
-- 将函数存储在变量中
local sum = add
print(sum(10, 5)) -- 输出 15
-- 匿名函数
local multiply = function(a, b)
return a * b
end
print(multiply(10, 5)) -- 输出 50userdata
userdata 用于存储 C 数据结构,通常由 C 扩展库使用。
thread
thread 用于协同程序(coroutine),是 Lua 中实现并发的机制。
类型检查
使用 type() 函数可以检查一个值的类型:
lua
print(type(nil)) -- 输出 nil
print(type(true)) -- 输出 boolean
print(type(10)) -- 输出 number
print(type("Hello")) -- 输出 string
print(type({})) -- 输出 table
print(type(function() end)) -- 输出 function类型转换
数字转字符串
lua
local num = 10
local str = tostring(num)
print(type(str)) -- 输出 string字符串转数字
lua
local str = "123"
local num = tonumber(str)
print(type(num)) -- 输出 number
local str2 = "3.14"
local num2 = tonumber(str2)
print(num2) -- 输出 3.14布尔值转字符串
lua
local bool = true
local str = tostring(bool)
print(str) -- 输出 true小结
本章节介绍了 Lua 的 8 种基本数据类型,包括 nil、boolean、number、string、table、function、userdata 和 thread。掌握这些数据类型的特性和使用方法,是 Lua 编程的基础。