1.8 KiB
1.8 KiB
#unity/日常积累
在 Lua 中,next 是一个内置函数,通常用于迭代表(table)的键值对。它是 Lua 的核心功能之一,在遍历表时尤其有用。
基本语法
next(table [, index])
-
参数:
table:需要遍历的表。index(可选):当前键的位置。如果省略,next从表的第一个键值对开始。
-
返回值:
- 返回表中下一个键及其对应的值。如果遍历到表的末尾,则返回
nil。
- 返回表中下一个键及其对应的值。如果遍历到表的末尾,则返回
示例 1:遍历表
local t = {a = 1, b = 2, c = 3}
local key, value = next(t) -- 从第一个键开始
while key do
print(key, value) -- 输出键和值
key, value = next(t, key) -- 获取下一个键值对
end
输出:
a 1
b 2
c 3
注意:键值对的顺序是非确定性的,Lua 不保证表的遍历顺序。
示例 2:和 pairs 的关系
next 是 pairs 函数的底层实现。实际上,pairs 函数可以看作是调用 next 的迭代器封装。
local t = {x = 10, y = 20}
for key, value in pairs(t) do
print(key, value) -- 等价于用 next 手动迭代
end
示例 3:判断表是否为空
next 可用来简单地检查表是否为空:
local t = {}
if next(t) == nil then
print("表是空的")
else
print("表中有内容")
end
注意事项 1 慎用 next 修改表:在使用 next 遍历表时,不要尝试在遍历过程中修改表的内容(如新增或删除键值对),否则可能导致未定义行为。 2 键为 nil 的情况:Lua 表中的键不能为 nil,因此 next 遇到键为 nil 的表时会报错。 next 是一个灵活的工具,但大多数情况下可以通过更高层的迭代器(如 pairs 或 ipairs)替代。