ユニオン型
CoddyのLuaジャーニー「Luau入門」セクションの一部。レッスン 31/73。
1つの型だけでは不十分な場合があります。ユーザー ID は "user123" として届くこともあれば、42 として届くこともあります。通常の Lua ではうまくいくことを祈るしかありませんが、Luau にはユニオン型(union types)が用意されています。パイプ | は「または」と読みます:
local userId: number | string
userId = "user123" -- ✓ 文字列が許可されています
userId = 42 -- ✓ 数値が許可されています
userId = true -- ✗ 型エラー: boolean はユニオンに含まれていませんこの変数にはユニオンのいずれかのメンバを保持でき、それらだけを保持できます。これが any との決定的な違いです。ユニオン型は必要な柔軟性を提供しつつ、許可する値について厳格さを保ちます。
ユニオンは、複数の入力形式を受け取る関数のパラメータに対して特に便利です:
function printId(id: number | string): ()
print(id)
end
printId(42) -- 数値で動作します
printId("user123") -- 文字列で動作しますすでに知っている string? は、実はあなたの最初のユニオンでした!これは単に string | nil のショートハンドです。次のレッスンでは、ユニオン型の値を取得した後に、安全に扱う方法について学びます。
チャレンジ
簡単id: number | string を受け取り、それを出力する printId という名前の関数を作成します。明示的な戻り値の型は () とします。
string | number 型の変数 status を宣言し、"<code>active" で初期化します。
次に、以下の順序で実行します:
printId(42)を呼び出すprintId("<code>user123") を呼び出すstatusを出力するstatusに200を再代入し、再度出力する
合計4行の出力になります。
自分で試してみよう
-- ここにコードを書く
-- printId(id: number | string): ()
-- local status: string | number = 指示の正確なテキスト
-- printId(42)を呼び出し、printId(指示の正確なテキスト)を呼び出し、
-- statusを出力し、200に再代入して再度出力
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
Luau入門のすべてのレッスン
7プロジェクト:Typed Task Manager
プロジェクト:タスクの型定義タスクを追加する関数自分で練習してみよう: Luaオンラインコンパイラ