Tipe Literal
Termasuk bagian Pengantar Luau dalam perjalanan Lua di Coddy. Pelajaran 33 dari 73.
Tipe seperti string mengizinkan string apa pun, tetapi terkadang hanya beberapa nilai pasti yang masuk akal. Tipe literal menggunakan nilainya sendiri sebagai tipe:
local mode: "dark" = "dark" -- hanya string "dark" yang diperbolehkan
local locked: true = true -- hanya nilai boolean true yang diperbolehkanJika berdiri sendiri, tipe dengan satu nilai hanya menarik sebagai keingintahuan. Jika digabungkan dengan union, tipe ini menjadi salah satu alat Luau yang paling berguna: sekumpulan nilai yang diizinkan dan dikendalikan dengan ketat:
type Direction = "north" | "south" | "east" | "west"
type GameState = "menu" | "playing" | "paused" | "gameover"
local move: Direction = "north" -- ✓
local state: GameState = "playing" -- ✓
-- local bad: Direction = "diagonal" -- ✗ error tipe!Sekarang, kesalahan ketik seperti "nort" atau nilai yang tidak valid seperti "diagonal" akan terdeteksi saat kamu mengedit. Dengan string biasa, kesalahan itu akan lolos dan menyebabkan masalah saat program dijalankan, jika kamu cukup beruntung untuk menyadarinya.
Tipe literal peka terhadap huruf besar-kecil dan harus sama persis: "North" tidak cocok dengan "north". Literal string adalah kasus yang paling umum, tetapi literal boolean dan, pada versi Luau yang lebih baru, literal angka bekerja dengan cara yang sama. Pola ini, yaitu union dari literal string, juga digunakan Luau sebagai pengganti enum di bahasa lain, seperti yang akan kamu lihat di bab berikutnya.
Tantangan
MudahBuat tiga alias tipe union literal:
Direction="north" | "south" | "east" | "west"GameState="menu" | "playing" | "paused" | "gameover"Difficulty="easy" | "medium" | "hard"
Deklarasikan menggunakan alias tersebut:
playerDirection: Direction="north"currentState: GameState="playing"selectedDifficulty: Difficulty="medium"
Buat fungsi movePlayer(direction: Direction): string yang mengembalikan "Moving [direction]", dan fungsi updateGameState(state: GameState): string yang mengembalikan "Game state: [state]".
Cetak, masing-masing pada barisnya sendiri:
movePlayer(playerDirection)updateGameState(currentState)- nilai
selectedDifficulty
Coba sendiri
-- Tulis kodemu di sini
-- Definisikan Direction / GameState / Difficulty sebagai gabungan nilai literal
-- Deklarasikan playerDirection, currentState, selectedDifficulty
-- movePlayer(direction: Direction): string -> "Moving [direction]"
-- updateGameState(state: GameState): string -> "Game state: [state]"
-- Cetak ketiga hasilnya
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
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
Menentukan Tipe Parameter dan Nilai KembalianMenentukan Tipe Fungsi AnonimFungsi yang Tidak Mengembalikan NilaiParameter OpsionalNilai Default ParameterFungsi VariadikMendefinisikan Tipe FungsiRangkuman: Fungsi Bertipe2Tipe Inti
Tipe Dasar: num, str, boolTipe 'any': Jalan Keluar DaruratTipe 'unknown'Nil & 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 Lanjutan3Tabel Bertipe: array dan Map
array BertipeMenambahkan dan Membaca ElemenApa Itu Tipe Map?Mendeklarasikan dan Mengakses MapMelakukan Iterasi pada TabelTabel dengan Bentuk Campuranarray Bertipe Multidimensitable.unpack dan VarargsRingkasan: array dan MapLatihan sendiri: Compiler Luau online