Menu
CoddyTech

遍历表

本课属于 Coddy Lua 学习旅程的“Luau 入门”单元。第 17 课,共 80 课。

你已经多次遍历 Lua 表了:Luau 保留了完全相同的循环,并为循环变量添加了类型。对于数组,ipairs 会按顺序遍历元素,索引从 1 到 #t,你还可以为两个变量都添加类型注解:

local temps: {number} = {18, 21, 19}
for day: number, temp: number in ipairs(temps) do
    print(`Day {day}: {temp}`)
end

记住,ipairs 会在遇到第一个缺失的索引时停止:中间出现 nil 空缺会让循环提前结束。对于维护良好的数组,这很少会造成问题,但值得了解。

对于映射,使用 pairs,它会遍历每一组键值对,包括字符串键。对于 {[string]: number} 映射,循环变量自然分别是 string 和 number:

local ages: {[string]: number} = {Alice = 30, Bob = 25}
for name: string, age: number in pairs(ages) do
    print(`{name} is {age}`)
end

有一个关键注意事项:pairs 遍历哈希部分的键时,不保证顺序。不同运行之间的顺序可能不同。如果你需要确定的输出(例如排序后的报告、测试),请将键收集到数组中,用 table.sort 排序,然后用 ipairs 遍历排序后的键,并通过索引访问映射。

challenge icon

挑战

简单

打印一周的气温及其总和。

  1. 声明 local temps: {number} = {12, 15, 11, 14} 和 local total = 0。
  2. 使用 for day: number, temp: number in ipairs(temps) do 循环,打印 `Day {day}: {temp}`,并将 temp 加到 total 中。
  3. 循环结束后,打印 total。

点击 运行代码:输出会显示从 Day 1: 12 到 Day 4: 14,然后是 52。

亲手试试

-- 1)声明 temps:{number},并将 total 设为 0。
-- 2)循环时为 day 和 temp 指定类型,打印每天的数据,并将其加到 total 中。
-- 3)打印 total。

Luau 入门中的所有课

自己练习: Luau 在线编译器