Menu
CoddyTech

Enum Numerik dengan Tabel

Termasuk bagian Pengantar Luau dalam perjalanan Lua di Coddy. Pelajaran 56 dari 80.

Berikut pola tabel konstanta selengkapnya. Pilih nama tabel PascalCase, beri setiap anggotanya angka eksplisit, lalu kode akan menggunakan nama-nama tersebut:

local UserRole = {
    Admin = 1,
    Editor = 2,
    Viewer = 3,
}

Tidak seperti enum TypeScript, tidak ada penomoran otomatis. Kamu memilih setiap nilai. Memulai dari 1 cocok dengan konvensi Lua, tetapi skema apa pun bisa digunakan, termasuk kode bergaya HTTP seperti 200 dan 404.

Anggota tabel sangat berguna dalam perbandingan. Fungsi yang menerima role dapat menggunakan percabangan berdasarkan konstanta bernama, bukan angka biasa:

local function checkPermissions(role: number)
    if role == UserRole.Admin then
        print("Full access granted")
    elseif role == UserRole.Editor then
        print("Edit access granted")
    else
        print("View access only")
    end
end

Perhatikan bahwa parameter bertipe number: pola tabel saja tidak membatasi angka mana yang boleh digunakan. Jaminan itulah yang ditambahkan oleh gabungan literal dalam pelajaran berikutnya.

challenge icon

Tantangan

Mudah

Beri nama tiga tingkat kesulitan dengan tabel konstanta.

  1. Buat local Level = {Easy = 1, Normal = 2, Hard = 3}.
  2. Tulis local function describeLevel(level: number): string yang mengembalikan "Relaxed" untuk Level.Easy, "Standard" untuk Level.Normal, dan "Brutal" untuk kondisi lainnya.
  3. Cetak Level.Hard, lalu describeLevel(Level.Normal).

Tekan Jalankan: output menampilkan 3 dan Standard.

Coba sendiri

-- 1) tabel konstanta Level (Easy = 1, Normal = 2, Hard = 3)
-- 2) describeLevel(level: number): string dengan if/elseif/else
-- 3) cetak Level.Hard, lalu describeLevel(Level.Normal)

Semua pelajaran di Pengantar Luau

Latihan sendiri: Compiler Luau online