Menu
CoddyTech

pairs() 与 ipairs() 的区别

本课属于 Coddy Lua 学习旅程的“逻辑与流程”单元。第 3 课,共 54 课。

现在你已经学会了 pairs() 和 ipairs(),接下来要了解何时使用它们。选择哪一个完全取决于表的结构和你想实现的目标。

当你有一个使用从 1 开始的连续整数键的列表型表时,使用 ipairs()。它会按顺序处理元素,并在遇到第一个 nil 值时停止,非常适合顺序很重要的数组。

当表中包含字符串键、混合类型的键,或者你需要访问所有条目而不受间隔影响时,使用 pairs()。它会按不特定的顺序遍历表中的每个键值对。

看看这个混合表:

local gameData = {
    "Level 1",
    "Level 2", 
    "Level 3",
    currentLevel = 2,
    playerName = "Hero"
}

如果你使用 ipairs(),只会看到三个关卡字符串。如果你使用 pairs(),则会看到全部五个条目,包括字符串键。

challenge icon

挑战

简单

编写一个函数 countSequentialItems,它接收一个 data 表,并返回按顺序排列的整数键项的数量。

使用 ipairs() 统计表中顺序部分的项数(从索引 1 开始,直到遇到第一个 nil)。这有助于你了解处理混合表时 ipairs() 和 pairs() 的区别。

参数:

  • data(表):一个同时包含顺序整数键和字符串键的混合表

返回值:顺序项的数量(数字)

亲手试试

function countSequentialItems(data)
    -- 在这里编写代码
end
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

逻辑与流程中的所有课

自己练习: Lua 在线编译器