Menu
CoddyTech

Kiểu literal

Thuộc phần Giới thiệu về Luau trong hành trình Lua của Coddy. Bài học 35 trên 80.

Các kiểu như string cho phép dùng bất kỳ chuỗi nào, nhưng đôi khi chỉ một vài giá trị cụ thể mới hợp lý. Kiểu literal dùng chính giá trị làm kiểu:

local mode: "dark" = "dark"   -- Chỉ cho phép chuỗi "dark"
local locked: true = true      -- Chỉ cho phép giá trị boolean true

Đứng riêng, các kiểu chỉ có một giá trị khá lạ lẫm. Khi kết hợp với kiểu hợp, chúng trở thành một trong những công cụ hữu ích nhất của Luau: một tập hợp các giá trị được phép, kiểm soát chặt chẽ:

type Direction = "north" | "south" | "east" | "west"
type GameState = "menu" | "playing" | "paused" | "gameover"

local move: Direction = "north"     -- ✓
local state: GameState = "playing"  -- ✓
-- local bad: Direction = "diagonal" -- ✗ lỗi kiểu dữ liệu!

Giờ đây, lỗi gõ nhầm như "nort" hay giá trị không hợp lệ như "diagonal" sẽ bị phát hiện ngay khi bạn chỉnh sửa. Nếu dùng string thông thường, lỗi sẽ lọt qua và gây trục trặc khi chạy chương trình, nếu bạn đủ may mắn để nhận ra.

Kiểu literal phân biệt chữ hoa chữ thường và phải khớp chính xác: "North" không khớp với "north". Literal chuỗi là trường hợp phổ biến nhất, nhưng literal boolean và (trong các phiên bản Luau mới hơn) literal số cũng hoạt động tương tự. Cách làm này, dùng kiểu hợp gồm các literal chuỗi, cũng là cách Luau thay thế enum của các ngôn ngữ khác, như bạn sẽ thấy ở chương sau.

challenge icon

Thử thách

Dễ

Chỉ cho phép đúng bốn tên hướng.

  1. Viết type Direction = "north" | "south" | "east" | "west".
  2. Viết local function movePlayer(direction: Direction): string để trả về `Moving {direction}`.
  3. Khai báo local playerDirection: Direction = "east" và in ra movePlayer(playerDirection).

Nhấn Run Code: đầu ra hiển thị Moving east.

Tự làm thử

-- 1) type Direction = "north" | "south" | "east" | "west"
-- 2) movePlayer(direction: Direction): string
-- 3) local playerDirection: Direction = "east", sau đó in ra bước di chuyển

Tất cả bài học trong Giới thiệu về Luau

Tự luyện tập: Trình biên dịch Luau online