無名関数の型指定
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として書き換え、本体はそのままにします。num > 0を返すlocal isPositive = function(num: number): booleanを追加します。subtract(10, 3)とisPositive(-5)を出力します。
コードを実行を押します。出力には 7 と false が表示されます。
自分で試してみよう
-- これをローカル変数に格納した無名関数として書き直す
function subtract(a: number, b: number): number
return a - b
end
Luau入門のすべてのレッスン
自分で練習してみよう: Luauオンラインコンパイラ