#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 不保证表的遍历顺序。
pairs 的关系next 是 pairs 函数的底层实现。实际上,pairs 函数可以看作是调用 next 的迭代器封装。
local t = {x = 10, y = 20}
for key, value in pairs(t) do
print(key, value) -- 等价于用 next 手动迭代
end
next 可用来简单地检查表是否为空:
local t = {}
if next(t) == nil then
print("表是空的")
else
print("表中有内容")
end
注意事项
1 慎用 next 修改表:在使用 next 遍历表时,不要尝试在遍历过程中修改表的内容(如新增或删除键值对),否则可能导致未定义行为。
2 键为 nil 的情况:Lua 表中的键不能为 nil,因此 next 遇到键为 nil 的表时会报错。
next 是一个灵活的工具,但大多数情况下可以通过更高层的迭代器(如 pairs 或 ipairs)替代。