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.
Thử thách
DễChỉ cho phép đúng bốn tên hướng.
- Viết
type Direction = "north" | "south" | "east" | "west". - Viết
local function movePlayer(direction: Direction): stringđể trả về`Moving {direction}`. - Khai báo
local playerDirection: Direction = "east"và in ramovePlayer(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
1Bắt đầu với Luau
Luau là gì?Tại sao nên dùng Luau?Đoạn code Luau đầu tiênKiểm tra kiểu và chế độ lỗiÔn tập: Giới thiệu về Luau4Làm việc với hàm
Kiểu dữ liệu cho tham số và giá trị trả vềKiểu dữ liệu cho hàm ẩn danhHàm không trả về giá trịTham số tùy chọnGiá trị tham số mặc địnhGiá trị Boolean mặc địnhHàm có số lượng tham số thay đổiĐịnh nghĩa kiểu hàmÔn tập: hàm có kiểu dữ liệu2Kiểu dữ liệu cốt lõi
Số, chuỗi và BooleanKiểu 'any': lối thoátKiểu 'unknown'Kiểu Nil và kiểu tùy chọnSuy luận kiểu trong thực tếChú thích kiểu tường minhÔn tập: luyện tập với kiểu dữ liệu cốt lõi5Bí danh kiểu, kiểu hợp và kiểu giao
Bí danh kiểu cho kiểu nguyên thủyKiểu hợpLàm việc với kiểu hợpKiểu literalKiểu giaoKết hợp bí danh kiểuÔn tập: kết hợp kiểu nâng cao3Bảng có kiểu: mảng và Map
Mảng có kiểuThêm và đọc phần tửKiểu Map là gì?Khai báo và truy cập MapDuyệt bảngBảng có cấu trúc hỗn hợpĐọc lướiTạo lướitable.unpackÔn tập: mảng và MapTự luyện tập: Trình biên dịch Luau online