教程 lua tutorial

表(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()(键值)
  • 是引用类型,复制表需注意浅拷贝问题