ユニオン型
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を取得した後、それを安全に扱う方法を学びます。
チャレンジ
簡単printId という名前の function を作成し、id: number | string を受け取って出力します:明示的な戻り値の型は () です。
型が string | number の変数 status を宣言し、"<code>active" で初期化します。
次に、次の順番で実行します:
printId(42)を call しますprintId("<code>user123") を call しますstatusを print しますstatusを200に再代入し、もう一度 print します
出力は合計 4 行です。
自分で試してみよう
-- ここにコードを書いてください
-- printId(id: number | string): ()
-- local status: string | number = 指示からの正確なテキスト
-- printId(42)を呼び出し、printId(指示からの正確なテキスト)を呼び出し、
-- statusを出力し、200に再代入し、再度出力する
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
Luau入門のすべてのレッスン
7プロジェクト:Typed Task Manager
プロジェクト:タスクの型定義タスクを追加する関数自分で練習してみよう: Luaオンラインコンパイラ