Menu
Coddy logo textTech

無名関数の型定義

CoddyのLuaジャーニー「Luau入門」セクションの一部 — レッスン 23/73。

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

チャレンジ

簡単

この名前付き関数(named function)を、すべての型注釈を保持したまま、ローカル変数に格納された無名関数(無名expression)として書き換えてください:

function subtract(a: number, b: number): number
    return a - b
end

つまり:同じパラメータ型と戻り値の型を持つ local subtract = function(...) ... end を作成します。

次に、型付きの無名関数をさらに2つ作成してください:

  • createMessagetext: string を受け取り、文字列 "Message: [text]" を返します(戻り値の型 string
  • isPositivenum: number を受け取り、数値が 0 より大きい場合は true、それ以外の場合は false を返します(戻り値の型 boolean

それぞれを独自の行で呼び出して出力(print)してください:

  1. subtract(10, 3)
  2. createMessage("Hello World")
  3. isPositive(-5)
  4. isPositive(8)

自分で試してみよう

-- ここにコードを書いてください
-- local subtract = function(a: number, b: number): number ... end
-- local createMessage = function(text: string): string ... end
-- local isPositive = function(num: number): boolean ... end
-- そして4つの結果を出力する
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

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