为匿名函数指定类型
本课属于 Coddy Lua 学习旅程的“Luau 入门”单元。第 24 课,共 80 课。
在 Lua 中,函数是值:你可以把它们存储在变量中,也可以传递给其他地方:local f = function(x) return x * 2 end。这些匿名函数(函数表达式)的类型注释写法和具名函数完全一样:
local double = function(x: number): number
return x * 2
end
local shout = function(text: string): string
return string.upper(text) .. "!"
end在括号内的参数后面写上 name: type,返回类型则写在右括号后面:它与具名函数唯一的区别是,function 关键字后面没有名称,而且整个表达式会赋值给一个变量。
如果你接触过 JavaScript 或 TypeScript,请注意,Luau 没有箭头函数,也没有 => 这种语法。所有函数表达式都要用 function ... end 来写,无论长短。
赋值后,你可以像调用任何函数一样通过变量来调用它:double(21) 会返回 42,检查器会根据你写的类型注释检查每次调用。
挑战
简单将带类型的函数存储在局部变量中。
- 将
subtract重写为local subtract = function(a: number, b: number): number,保留函数体。 - 添加
local isPositive = function(num: number): boolean,使其返回num > 0。 - 打印
subtract(10, 3)和isPositive(-5)。
按“运行代码”:输出会显示 7 和 false。
亲手试试
-- 把它改写成匿名函数,并存入局部变量。
function subtract(a: number, b: number): number
return a - b
end
Luau 入门中的所有课
自己练习: Luau 在线编译器