Menu
CoddyTech

省略可能な引数

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

通常のLuaでは、引数はいつでも省略できました。省略された引数は暗黙のうちにnilになり、それを処理し忘れることは、よくあるバグの原因でした。Luauではその可能性が明示されます。パラメーターの型に?を付けて省略可能であることを示します。

function greet(name: string, title: string?): string
    if title then
        return `{title} {name}`
    end
    return `Hello, {name}`
end

print(greet("Ada"))          -- Hello, Ada
print(greet("Ada", "Dr."))   -- Dr. Ada

string?は「stringまたはnil」という意味です。呼び出し側は文字列を渡すか、引数を完全に省略できます。?のないパラメーターは必須であり、チェッカーはそれらを省略した呼び出しに警告します。

関数内では、省略可能なパラメーターがnilの可能性があるため、使う前に確認してください。if title then ... endが標準的なパターンです。確認を省略してnilを文字列に連結すると、Luaでいつも起きていたのと同じ実行時エラーが発生します。型チェッカーはその前に警告してくれます。

challenge icon

チャレンジ

簡単

表示名が省略可能なプロフィール関数を書きましょう。

  1. local function createUserProfile(username: string, displayName: string?): stringを書きましょう。
  2. displayNameが指定されている場合は`Profile: {displayName} (@{username})`を返し、それ以外の場合は`Profile: @{username}`を返しましょう。
  3. createUserProfile("john_doe", "John Doe")とcreateUserProfile("jane_smith")を出力しましょう。

Run Codeを押すと、出力にProfile: John Doe (@john_doe)とProfile: @jane_smithが表示されます。

自分で試してみよう

-- 1) createUserProfile(username: string, displayName: string?): string
-- 2) 表示名がある場合とない場合の両方で、それを出力する

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

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