联合类型
本课属于 Coddy Lua 学习旅程的“Luau 入门”单元。第 33 课,共 80 课。
有时一种类型还不够。用户 ID 可能以 "user123" 的形式出现,或以 42 的形式出现。在普通 Lua 中,你只能祈祷一切顺利;Luau 则提供了联合类型:竖线 | 表示“或”:
local userId: number | string
userId = "user123" -- ✓ 可以是字符串
userId = 42 -- ✓ 可以是数字
userId = true -- ✗ 类型错误:联合类型中不包含 boolean变量可以保存联合类型中的任意一个成员,只能保存这些成员。这正是它与 any 的关键区别:联合类型会严格限制允许的值,同时又能提供你需要的灵活性。
联合类型对接受多种输入格式的函数参数尤其有用:
function printId(id: number | string): ()
print(id)
end
printId(42) -- 可以传入数字
printId("user123") -- 可以传入字符串你已经认识 string? 了。那就是你的第一个联合类型!它只是 string | nil 的简写。下一课,你将学习如何在获得联合类型的值后,安全地使用它。
挑战
简单接受一个值,该值可以是数字或字符串。
- 编写
local function printId(id: number | string): (),用于打印id。 - 声明
local status: string | number = "active"。 - 调用
printId(7)和printId("player7"),然后将status设为200并打印它。
点击运行代码:输出会显示 7、player7 和 200。
亲手试试
-- 1) printId(id: number | string): ()
-- 2) local status: string | number = "active"
-- 3) 调用 printId(7) 和 printId("player7"),将 status 设为 200,然后打印它
Luau 入门中的所有课
自己练习: Luau 在线编译器