Menu
CoddyTech

为匿名函数指定类型

本课属于 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,检查器会根据你写的类型注释检查每次调用。

challenge icon

挑战

简单

将带类型的函数存储在局部变量中。

  1. 将 subtract 重写为 local subtract = function(a: number, b: number): number,保留函数体。
  2. 添加 local isPositive = function(num: number): boolean,使其返回 num > 0。
  3. 打印 subtract(10, 3) 和 isPositive(-5)。

按“运行代码”:输出会显示 7 和 false。

亲手试试

-- 把它改写成匿名函数,并存入局部变量。
function subtract(a: number, b: number): number
    return a - b
end

Luau 入门中的所有课

自己练习: Luau 在线编译器