主题
表(Table)
Table
是 Lua 中唯一的数据结构类型,功能非常强大。
它既可以作为 数组、字典(键值对)、对象,也能实现 类与模块系统。
🧩 创建表
lua
-- 空表
local t1 = {}
-- 数组形式
local t2 = {10, 20, 30}
-- 键值对形式
local t3 = {name = "Alice", age = 20}
表可以同时混合数组与字典结构。
📦 访问与修改元素
lua
local user = {name = "Bob", age = 25}
-- 访问
print(user.name) -- Bob
print(user["age"]) -- 25
-- 修改
user.city = "Tokyo"
user["age"] = 26
🧱 作为数组使用
表的索引从 1 开始(与 C/Python 不同)。
lua
local arr = {"Lua", "Python", "Go"}
print(arr[1]) -- Lua
print(#arr) -- 获取长度:3
🔁 遍历表
Lua 提供两种常用遍历方式:
1️⃣ ipairs()
:用于顺序数组
lua
local langs = {"Lua", "Rust", "Go"}
for i, v in ipairs(langs) do
print(i, v)
end
2️⃣ pairs()
:用于键值表
lua
local user = {name = "Alice", age = 20, city = "Osaka"}
for k, v in pairs(user) do
print(k, v)
end
🧰 表操作函数(table 库)
Lua 标准库提供 table
模块,包含常用表操作。
lua
local fruits = {"apple", "banana"}
table.insert(fruits, "orange")
print(table.concat(fruits, ", ")) -- apple, banana, orange
table.remove(fruits, 1)
print(table.concat(fruits, ", ")) -- banana, orange
🧩 嵌套表
表可以包含表,实现更复杂的结构:
lua
local student = {
name = "Tom",
scores = {math = 95, english = 88}
}
print(student.scores.math)
🧠 表的引用特性
表是 引用类型,复制时仅复制引用,而非内容。
lua
local t1 = {x = 1, y = 2}
local t2 = t1
t2.x = 99
print(t1.x) -- 输出 99,同一个引用
如果要复制内容,需要手动遍历或使用深拷贝函数。
🧠 小结
table
是 Lua 的核心数据结构- 支持数组与字典混合形式
- 遍历使用
ipairs()
(顺序)或pairs()
(键值) - 是引用类型,复制表需注意浅拷贝问题