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つのパターンは互いを補完します。テーブルは1つの名前の下で実行時のを提供し、ユニオンはコンパイル時の保証を提供します。この章の後半では、定数テーブルが実行時に変更されないよう保護するtable.freezeについても学びます。

自分で試してみよう

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

quiz icon腕試し

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

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

自分で練習してみよう: Luaオンラインコンパイラ