Menu
Coddy logo textTech

ユニオン型

CoddyのLuaジャーニー「Luau入門」セクションの一部 — レッスン 31/73。

1つの型だけでは不十分な場合があります。ユーザー ID は "user123" として届くこともあれば、42 として届くこともあります。通常の Lua ではうまくいくことを祈るしかありませんが、Luau には union 型(共用体型)があります。パイプ記号 | は「または」と読みます:

local userId: number | string

userId = "user123"  -- ✓ 文字列が許可されています
userId = 42          -- ✓ 数値が許可されています
userId = true        -- ✗ 型エラー: boolean はユニオンに含まれていません

variableunion のいずれかの members(構成要素)を保持でき、それらだけを保持できます。これが any との最も重要な違いです。union は必要な柔軟性を提供しつつ、何が allowed(許可)されているかについて厳格さを保ちます。

union types は、複数の入力フォーマットを受け入れる functionparameter に特に便利です:

function printId(id: number | string): ()
    print(id)
end

printId(42)          -- 数値で動作します
printId("user123")   -- 文字列で動作します

あなたはすでに string? を知っていますが、それが最初の union でした!これは単に string | nil の省略形です。次のレッスンでは、union 値を取得した後に、それを安全に使用・操作する方法を学びます。

challenge icon

チャレンジ

簡単

id: number | string を受け取り、それを出力する printId という名前の関数を作成します。明示的な戻り値の型は () とします。

型が string | number で、"active" で初期化された変数 status を宣言します。

次に、順番に以下を行います:

  1. printId(42) を呼び出す
  2. printId("user123") を呼び出す
  3. status を出力する
  4. status200 を再代入してもう一度出力する

出力は合計で4行になります。

自分で試してみよう

-- ここにコードを書いてください
-- printId(id: number | string): ()
-- local status: string | number = "active"
-- printId(42)、printId("user123") を呼び出す、
-- status を出力し、200 に再代入して、再度出力する
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

Luau入門のすべてのレッスン