Menu
CoddyTech

声明和访问映射

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

声明一个带类型的映射,写法和你一直在写的表构造器类似:类型注解只限定键和值的类型:

local stock: {[string]: number} = {apples = 12, bananas = 5}

读取和写入使用你熟悉的索引方式。对于有效标识符形式的键,stock.apples 和 stock["apples"] 会访问同一个条目;方括号形式也可以处理包含空格的键,或存储在变量中的键:

stock["cherries"] = 20   -- 添加一个新条目
stock.bananas = 8        -- 更新一个已有条目
print(stock["apples"])  -- 12
print(stock["plums"])   -- nil:从未设置

类型检查器会检查每次写入:stock["apples"] = "many" 会被标记为错误,因为 "many" 不是数字;用数字作为键也会被标记为错误,因为键必须是字符串。

要删除一个条目,可以将 nil 赋给它的键:stock["bananas"] = nil 会将其彻底移除,之后读取时会得到 nil。没有单独的删除函数;这是标准的 Lua 写法,在映射上也能通过类型检查。

challenge icon

挑战

简单

维护一份带类型的学习用品映射表。

  1. 声明 local stock: {[string]: number} = {pens = 40, rulers = 15}。
  2. 添加 stock["erasers"] = 25,并将 rulers 改为 10。
  3. 打印 pens、rulers、erasers 和 glue 的库存,每行一个。

按“运行”:输出会显示 40、10、25 和 nil。

亲手试试

-- 1)声明 stock:{[string]: number},其中 pens = 40、rulers = 15。
-- 2)添加 erasers = 25,并将 rulers 改为 10。
-- 3)依次输出 pens、rulers、erasers,然后输出 glue。

Luau 入门中的所有课

自己练习: Luau 在线编译器