表(Table)
Table 是 Lua 中唯一的数据结构类型,功能非常强大。
它既可以作为 数组、字典(键值对)、对象,也能实现 类与模块系统。
🧩 创建表
-- 空表
local t1 = {}
-- 数组形式
local t2 = {10, 20, 30}
-- 键值对形式
local t3 = {name = "Alice", age = 20}
`
表可以同时混合数组与字典结构。
📦 访问与修改元素
local user = {name = "Bob", age = 25}
-- 访问
print(user.name) -- Bob
print(user["age"]) -- 25
-- 修改
user.city = "Tokyo"
user["age"] = 26
🧱 作为数组使用
表的索引从 1 开始(与 C/Python 不同)。
local arr = {"Lua", "Python", "Go"}
print(arr[1]) -- Lua
print(#arr) -- 获取长度:3
🔁 遍历表
Lua 提供两种常用遍历方式:
1️⃣ ipairs():用于顺序数组
local langs = {"Lua", "Rust", "Go"}
for i, v in ipairs(langs) do
print(i, v)
end
2️⃣ pairs():用于键值表
local user = {name = "Alice", age = 20, city = "Osaka"}
for k, v in pairs(user) do
print(k, v)
end
🧰 表操作函数(table 库)
Lua 标准库提供 table 模块,包含常用表操作。
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
🧩 嵌套表
表可以包含表,实现更复杂的结构:
local student = {
name = "Tom",
scores = {math = 95, english = 88}
}
print(student.scores.math)
🧠 表的引用特性
表是 引用类型,复制时仅复制引用,而非内容。
local t1 = {x = 1, y = 2}
local t2 = t1
t2.x = 99
print(t1.x) -- 输出 99,同一个引用
如果要复制内容,需要手动遍历或使用深拷贝函数。
🧠 小结
table是 Lua 的核心数据结构- 支持数组与字典混合形式
- 遍历使用
ipairs()(顺序)或pairs()(键值) - 是引用类型,复制表需注意浅拷贝问题
相关内容
- Lua 高级技巧与优化 学习 Lua 的高级编程技巧,包括性能优化、内存管理、闭包、尾递归优化和元表高级用法。
- Lua 与 C 的交互 学习如何在 Lua 中调用 C 函数、在 C 中嵌入 Lua,实现 Lua 与 C 的混合编程。
- 流程控制 学习 Lua 中的条件判断、循环语句与控制关键字的用法,包括 if、while、for 与 repeat until。
- Lua 协程(Coroutine) 学习 Lua 协程的基本概念、创建方法、调度与应用,实现轻量级多任务和协作式并发。
- 函数 学习 Lua 中函数的定义与调用方式,掌握参数传递、返回值、可变参数与匿名函数等概念。
- Lua 简介 了解 Lua 的起源、设计理念及应用场景,掌握 Lua 语言的核心特征与优势。