添加和读取元素
本课属于 Coddy Lua 学习旅程的“Luau 入门”单元。第 14 课,共 80 课。
你已经会用 table.insert 和 table.remove 增大和缩小 Lua 表了:它们在类型化数组上的工作方式完全相同。区别在于,Luau 现在会检查你插入的内容:如果把字符串放进 {number} 数组,输入时就会提示错误,而不是等到运行时让困惑的玩家发现问题。
local queue: {string} = {"save", "load"}
table.insert(queue, "quit") -- 追加到末尾
table.insert(queue, 1, "help") -- 插入到位置 1,其余元素依次后移
local last = table.remove(queue) -- 移除并返回最后一个元素table.remove(t) 会取出最后一个元素并把它交还给你;table.remove(t, 1) 会移除第一个元素,并将后面的所有元素向前移动。由于数组的类型是 {string},Luau 知道返回值是字符串。
读取时也和普通 Lua 一样宽容:如果某个索引没有值,比如 queue[0]、queue[-1],或任何大于 #queue 的索引,结果都会静默地变成 nil。不会引发错误,所以使用不确定是否存在的值之前,先检查它是否为 nil。
挑战
简单扩展和缩减一个有类型的移动列表。
- 声明
local moves: {string} = {"jump", "run"}。 - 用
table.insert追加"duck",然后在位置 1 插入"crawl"。 - 将
table.remove(moves)存入local removed,然后打印removed、#moves、moves[1]和moves[10]。
按下 Run Code:输出会显示 duck、3、crawl 和 nil。
亲手试试
-- 1)声明 moves:{string},包含 "jump" 和 "run"
-- 2)追加 "duck",在位置 1 插入 "crawl"
-- 3)删除最后一个动作,然后打印这 4 个值
Luau 入门中的所有课
自己练习: Luau 在线编译器