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(),则会看到全部五个条目,包括字符串键。
挑战
简单编写一个函数 countSequentialItems,它接收一个 data 表,并返回按顺序排列的整数键项的数量。
使用 ipairs() 统计表中顺序部分的项数(从索引 1 开始,直到遇到第一个 nil)。这有助于你了解处理混合表时 ipairs() 和 pairs() 的区别。
参数:
data(表):一个同时包含顺序整数键和字符串键的混合表
返回值:顺序项的数量(数字)
亲手试试
function countSequentialItems(data)
-- 在这里编写代码
end
这节课包含一个小测验。开始学习即可作答,并记录你的进度。
逻辑与流程中的所有课
自己练习: Lua 在线编译器