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