Menu
CoddyTech

Enum String sebagai Union

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

Angka menghasilkan log yang sulit dipahami: melihat 2 tidak banyak memberi tahu kamu, sedangkan melihat "down" memberi tahu semuanya. Untuk enum yang mudah dibaca, tipe union literal Luau adalah alatnya: tipe yang anggotanya berupa string persis:

type Direction = "up" | "down" | "left" | "right"

local facing: Direction = "up"    -- ✓
local typo: Direction = "upp"     -- ✗ error tipe saat kamu mengedit

Variabel yang diberi anotasi Direction dapat menyimpan keempat string tersebut dan tidak ada yang lain. Jika kamu salah mengeja salah satunya, pemeriksa akan langsung menangkapnya: bug tidak akan pernah sampai ke pemain.

Saat runtime, nilainya adalah string biasa. Cetak nilainya, gabungkan, bandingkan dengan ==. Semua yang kamu ketahui tentang string berlaku:

print(facing)            -- atas
print(`facing {facing}`) -- menghadap ke atas

Bandingkan dua pola yang sekarang kamu miliki: tabel konstanta membuat satu nilai runtime (UserRole) yang menyimpan anggota, sedangkan union literal sama sekali tidak membuat nilai. Tidak ada tabel Direction, hanya aturan yang ditegakkan pemeriksa tentang string mana yang sesuai. Nilai deskriptif yang mendokumentasikan dirinya sendiri tanpa biaya runtime menjadikan union literal gaya enum pilihan utama dalam kode Luau.

challenge icon

Tantangan

Mudah

Simpan arah yang hanya bisa berupa salah satu dari empat nama.

  1. Tulis type Direction = "up" | "down" | "left" | "right".
  2. Deklarasikan local facing: Direction = "left".
  3. Cetak facing, lalu `The player moves {facing}`.

Tekan tombol Jalankan: output menampilkan left dan The player moves left.

Coba sendiri

-- 1) buat type Direction sebagai gabungan empat string
-- 2) local facing: Direction = "left"
-- 3) print facing, lalu kalimatnya

Semua pelajaran di Pengantar Luau

Latihan sendiri: Compiler Luau online