引数のデフォルト値
CoddyのLuaジャーニー「Luau入門」セクションの一部。レッスン 27/80。
オプションのパラメーターを使うと、処理する必要のあるnilが残ります。多くの場合、本当に必要なのはフォールバック値です。「呼び出し元が指定しなかったら、Xを使う」ということです。Luauではシグネチャにデフォルト値を書く構文はありません(greeting: string = "Hello"のようには書けません)。代わりに、型を付けて従来のLuaのイディオムを使います。
function greet(name: string, greeting: string?): string
greeting = greeting or "Hello"
return `{greeting}, {name}`
end
print(greet("Alice")) -- Hello, Alice
print(greet("Alice", "Howdy")) -- Howdy, Aliceパラメーターにはオプションであることを示す注釈(string?)が付いており、本体の最初の行でnilをデフォルト値に置き換えます。nilは偽値なので、この方法は機能します。nil or "Hello"は"Hello"と評価されます。この行の後は、greetingがもはやnilにならないことを型チェッカーが認識します。
チャレンジ
簡単省略可能なパラメーターにデフォルト値を設定します。
local function calculateTax(price: number, rate: number?): numberと書きます。- 最初の行は
rate = rate or 0.05です。その後、price * rateを返します。 calculateTax(100)とcalculateTax(200, 0.08)を出力します。
コードを実行を押します。出力には5、次に16と表示されます。
自分で試してみよう
-- 1) calculateTax(price: number, rate: number?): number
-- `or` を使った定番の書き方で rate のデフォルト値を 0.05 にする
-- 2) calculateTax(100) と calculateTax(200, 0.08) を出力する
Luau入門のすべてのレッスン
自分で練習してみよう: Luauオンラインコンパイラ