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 mengeditVariabel 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 atasBandingkan 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.
Tantangan
MudahSimpan arah yang hanya bisa berupa salah satu dari empat nama.
- Tulis
type Direction = "up" | "down" | "left" | "right". - Deklarasikan
local facing: Direction = "left". - 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
1Memulai dengan Luau
Apa Itu Luau?Mengapa Menggunakan Luau?Kode Luau PertamamuPemeriksaan Tipe dan Mode ErrorRangkuman: Pengenalan Luau4Bekerja dengan Fungsi
Mengetik Parameter dan Nilai KembalianMengetik Fungsi AnonimFungsi Tanpa Nilai KembalianParameter OpsionalNilai Parameter DefaultNilai Default untuk BooleanFungsi VariadikMendefinisikan Tipe FungsiUlasan: Fungsi Bertipe2Tipe Inti
Number, String, dan BooleanTipe 'any': Jalan KeluarTipe 'unknown'Nil dan Tipe OpsionalInferensi Tipe dalam PraktikAnotasi Tipe EksplisitUlasan: Latihan Tipe Inti5Alias, Union, dan Intersection
Alias Tipe untuk Tipe PrimitifTipe UnionMenggunakan Tipe UnionTipe LiteralTipe IntersectionMenggabungkan Alias TipeRekap: Kombinasi Tipe Lanjutan8Enum, Cara Luau
Pola Enum di LuauEnum Numerik dengan TabelEnum String sebagai UnionMenggunakan Enum Union LiteralMembekukan Tabel KonstantaUlasan: Enum, Cara Luau3Tabel Bertipe: array & map
Array BertipeMenambahkan dan Membaca ElemenApa Itu Tipe Map?Mendeklarasikan dan Mengakses MapMenelusuri TabelTabel dengan Bentuk CampuranMembaca GridMembuat Gridtable.unpackRangkuman: array dan mapLatihan sendiri: Compiler Luau online