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. num > 0 を返す local isPositive = function(num: number): boolean を追加します。
  3. subtract(10, 3) と isPositive(-5) を出力します。

コードを実行を押します。出力には 7 と false が表示されます。

自分で試してみよう

-- これをローカル変数に格納した無名関数として書き直す
function subtract(a: number, b: number): number
    return a - b
end

Luau入門のすべてのレッスン

自分で練習してみよう: Luauオンラインコンパイラ