Menu
Coddy logo textTech

ユニオン型

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

1つの型だけでは不十分なことがあります。ユーザーIDは"user123" または 42として届くかもしれません。プレーンなLuaなら最善を祈るしかありませんが、Luauではunion typesを使えます。パイプ記号|は「または」を意味します。

local userId: number | string

userId = "user123"  -- ✓ string は許可されています
userId = 42          -- ✓ number は許可されています
userId = true        -- ✗ 型エラー: boolean はユニオンに含まれていません

このvariableにはunionのどちらか一方のmember、そしてそれだけを格納できます。これがanyとの決定的な違いです。unionは、必要な柔軟性を与えながら、許可されるものについて厳密なままです。

unionは、複数の入力形式を受け付けるfunctionのparameterに特に便利です。

function printId(id: number | string): ()
    print(id)
end

printId(42)          -- 数値で動作します
printId("user123")   -- 文字列で動作します

string?はすでに知っていますね。これは最初に学んだunionです。単にstring | nilの省略記法です。次のレッスンでは、union valueを取得した後、それを安全に扱う方法を学びます。

challenge icon

チャレンジ

簡単

printId という名前の function を作成し、id: number | string を受け取って出力します:明示的な戻り値の型は () です。

型が string | number の変数 status を宣言し、"<code>active" で初期化します。

次に、次の順番で実行します:

  1. printId(42) を call します
  2. printId("<code>user123") を call します
  3. status を print します
  4. status200 に再代入し、もう一度 print します

出力は合計 4 行です。

自分で試してみよう

-- ここにコードを書いてください
-- printId(id: number | string): ()
-- local status: string | number = 指示からの正確なテキスト
-- printId(42)を呼び出し、printId(指示からの正確なテキスト)を呼び出し、
-- statusを出力し、200に再代入し、再度出力する
quiz icon腕試し

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

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

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