Menu
CoddyTech

添加和读取元素

本课属于 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。

challenge icon

挑战

简单

扩展和缩减一个有类型的移动列表。

  1. 声明 local moves: {string} = {"jump", "run"}。
  2. 用 table.insert 追加 "duck",然后在位置 1 插入 "crawl"。
  3. 将 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 在线编译器