泛型数组
本课属于 Coddy Lua 学习旅程的“Luau 入门”单元。第 64 课,共 80 课。
涉及表格时,泛型就非常实用。你已经会把类型化数组写成 {number} 或 {string}。在泛型函数中,元素类型可以直接写成 T,而 {T} 表示“由 T 决定类型的数组”。
来看一个经典示例:获取任意数组的第一个元素:
local function first<T>(items: {T}): T?
return items[1]
end传入一个 {string},检查器就会推断出 T = string,因此结果是字符串。传入一个 {number},结果就是数字。一个函数就能替代一整组针对不同类型编写的函数。
仔细看看返回类型:它是 T?,而不是 T。数组可能为空,这时 items[1] 就是 nil:你之前学过的可选类型会如实表示这一点:“一个 T,或者 nil”。在使用结果之前,检查器会提醒调用者处理 nil 的情况,这正是你希望类型化语言帮你捕获的错误。
挑战
简单获取任意数组的第一个元素。
- 编写
local function first<T>(items: {T}): T?,使其返回items[1]。 - 声明
local fruits: {string} = {"apple", "banana"}和local empty: {number} = {}。 - 先打印
first(fruits),再打印first(empty)。
按下 运行代码:输出会显示 apple 和 nil。
亲手试试
-- 1)first<T>(items: {T}): T?
-- 2)fruits: {string} 和一个空的 {number}
-- 3)输出每个集合的第一个元素
Luau 入门中的所有课
自己练习: Luau 在线编译器