Menu
Coddy logo textTech

LuauにおけるEnumパターン

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

プログラムは、小規模で固定されたセットから取得される値であふれています。注文が pendingshipped、あるいは delivered である場合や、プレイヤーが updownleft、または right を向いている場合などです。多くの言語にはこれのための enum キーワードが存在します。Luau にはありません — そして、すでに知っている2つのツールで代用できるため、必要もありません。

パターン 1: 定数テーブル。 通常のテーブルで意味のある名前を値にマッピングし、コード全体に散らばる「マジックナンバー」を置き換えます:

local Status = {
    Pending = 1,
    Active = 2,
    Done = 3,
}

print(Status.Active) -- 2

これは実際の実行時値です。Status.Active を読み取ったり、比較したり、受け渡したりすることができます — これまで使ってきたテーブルとまったく同じです。

パターン 2: リテラルユニオン。 ユニオンの章で学んだリテラル型を使用して、正確な文字列値で構成される型を作成します:

type Color = "red" | "green" | "blue"
local favorite: Color = "green" -- ✓
local oops: Color = "yellow"    -- ✗ type error

このユニオンはチェッカーのためだけに存在し(実行時のコストはゼロ)、変数がセット外の値を持たないことを保証します。2つのパターンは互いに補完し合います。テーブルは単一の名前の下で実行時を提供し、ユニオンはコンパイル時の保証を提供します。この章の後半では、定数テーブルが実行時に変更されるのを防ぐ table.freeze についても学びます。

自分で試してみよう

このレッスンにはコードチャレンジは含まれていません。

quiz icon腕試し

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

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