hand
_1_34_20
4
返回栏目
1k
2k
1k
2k
1k
1k
2k
2k
2k
2k
2k
2k
3k
3k
2k
2k
2k
1k
2k
2k
2k
2k
2k
2k
2k
2k
1k
1k
1k
2k
1k
1k
2k
1k
2k
2k
2k
2k
2k
2k
2k
1k
2k
2k
2k
2k
2k
3k
2k
2k
6k
2k
2k
2k
2k
2k
2k
2k
2k
2k
2k
2k
2k
2k
2k
2k
2k
2k
2k
2k
2k
2k
3k
2k
2k
2k
2k
2k
3k
3k
3k
1k
3k
3k
5k
2k
2k
2k
1k
1k
2k
2k
1k
1k
1k
2k
2k
2k
2k
2k
2k
2k
2k
3k
2k
2k
2k
2k
3k
3k
2k
2k
2k
2k
4k
2k
3k
2k
3k
2k
3k
2k
3k
2k
2k
2k
3k
返回Lua栏目
作者:
贺及楼
成为作者
更新日期:2025-02-27 21:43:02
在 Lua 编程语言中,表(table)是一种非常强大且灵活的数据结构。它可以被看作是关联数组,也就是以键值对的方式来存储数据。这种特性使得表在 Lua 中应用广泛,无论是简单的数据存储,还是复杂的数据管理和算法实现,表都能发挥重要作用。本文将深入探讨 Lua 表作为关联数组的特性、使用方法以及一些实用的例子。
在 Lua 中,表是一种动态的数据结构,它可以存储任意类型的值,包括数字、字符串、函数甚至其他表。表的键可以是除了 nil
以外的任何类型,值可以是任意类型。表的创建非常简单,使用大括号 {}
即可。
-- 创建一个空表
local myTable = {}
-- 向表中添加键值对
myTable["name"] = "John"
myTable["age"] = 30
myTable[1] = "apple"
-- 访问表中的值
print(myTable["name"]) -- 输出: John
print(myTable["age"]) -- 输出: 30
print(myTable[1]) -- 输出: apple
除了逐个添加键值对,还可以在创建表时直接初始化。
-- 直接初始化表
local student = {
name = "Alice",
age = 20,
grades = {math = 90, english = 85}
}
-- 访问表中的值
print(student.name) -- 输出: Alice
print(student.grades.math) -- 输出: 90
可以使用方括号 []
或点号 .
来访问表中的值。使用方括号时,键可以是变量或表达式;使用点号时,键必须是合法的标识符。
local key = "name"
print(student[key]) -- 输出: Alice
Lua 提供了两种主要的方式来遍历表:pairs
和 ipairs
。
pairs
遍历pairs
可以遍历表中的所有键值对,包括非连续的键。
local fruit = {
["apple"] = 1,
["banana"] = 2,
["cherry"] = 3
}
for key, value in pairs(fruit) do
print(key.. ": ".. value)
end
ipairs
遍历ipairs
主要用于遍历数组部分,也就是键为连续整数的部分,从 1 开始,遇到第一个 nil
就停止。
local numbers = {10, 20, 30, nil, 40}
for index, value in ipairs(numbers) do
print(index.. ": ".. value)
end
local text = "hello world hello lua"
local words = {}
-- 分割字符串
for word in string.gmatch(text, "%w+") do
if words[word] then
words[word] = words[word] + 1
else
words[word] = 1
end
end
-- 输出统计结果
for word, count in pairs(words) do
print(word.. ": ".. count)
end
local employees = {
{id = 1, name = "Tom", department = "HR"},
{id = 2, name = "Jane", department = "IT"},
{id = 3, name = "Bob", department = "Finance"}
}
-- 查找 IT 部门的员工
for _, employee in ipairs(employees) do
if employee.department == "IT" then
print(employee.name)
end
end
操作 | 方法 | 说明 |
---|---|---|
创建表 | {} |
使用大括号创建一个空表 |
添加键值对 | table[key] = value |
向表中添加或修改键值对 |
访问值 | table[key] 或 table.key |
使用方括号或点号访问表中的值 |
遍历表 | pairs |
遍历表中的所有键值对 |
遍历数组部分 | ipairs |
遍历表中连续整数键的部分 |
通过以上的介绍和例子,我们可以看到 Lua 表作为关联数组的强大之处。它可以方便地存储和管理各种类型的数据,并且提供了丰富的操作方法。在实际的 Lua 编程中,合理运用表可以让代码更加简洁、高效。
Lua
整章节共127节
快分享给你的小伙伴吧 ~