Menu
CoddyTech

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 diperbolehkan

Jika 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.

challenge icon

Tantangan

Mudah

Buat 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:

  1. movePlayer(playerDirection)
  2. updateGameState(currentState)
  3. 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
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Pengantar Luau

Latihan sendiri: Compiler Luau online