ユニオン型
CoddyのLuaジャーニー「Luau入門」セクションの一部。レッスン 33/80。
1種類だけでは足りないこともあります。ユーザーIDは"user123"として届くこともあれば、42として届くこともあります。素のLuaなら運任せにするところですが、Luauにはユニオン型があります。パイプ|は「または」と読みます。
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を短く書いたものです。次のレッスンでは、ユニオン型の値を使って安全に作業する方法を学びます。
チャレンジ
簡単数値または文字列の値を受け取ります。
local function printId(id: number | string): ()を記述し、idを出力します。local status: string | number = "active"を宣言します。printId(7)とprintId("player7")を呼び出し、その後status = 200を設定して出力します。
「コードを実行」を押すと、出力に7、player7、200が表示されます。
自分で試してみよう
-- 1) printId(id: number | string): ()
-- 2) local status: string | number = "active"
-- 3) printId(7) と printId("player7") を呼び出し、status を 200 に設定して出力する
Luau入門のすべてのレッスン
自分で練習してみよう: Luauオンラインコンパイラ