2025-03-26 00:02:56 +08:00

1.8 KiB
Raw Blame History

#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 不保证表的遍历顺序。


示例 2pairs 的关系

nextpairs 函数的底层实现。实际上,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替代。