Menu
CoddyTech

ユニオン型

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を短く書いたものです。次のレッスンでは、ユニオン型の値を使って安全に作業する方法を学びます。

challenge icon

チャレンジ

簡単

数値または文字列の値を受け取ります。

  1. local function printId(id: number | string): ()を記述し、idを出力します。
  2. local status: string | number = "active"を宣言します。
  3. 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オンラインコンパイラ