Enum chuỗi dưới dạng hợp
Thuộc phần Giới thiệu về Luau trong hành trình Lua của Coddy. Bài học 57 trên 80.
Các con số khiến nhật ký khó hiểu: thấy 2 thì bạn biết rất ít, thấy "down" thì bạn biết mọi thứ. Để tạo enum dễ đọc, Luau có công cụ là kiểu hợp các giá trị chuỗi cố định (literal union types): một kiểu có các thành viên là những chuỗi chính xác:
type Direction = "up" | "down" | "left" | "right"
local facing: Direction = "up" -- ✓
local typo: Direction = "upp" -- ✗ lỗi kiểu dữ liệu khi chỉnh sửaBiến được chú thích bằng Direction có thể chứa bốn chuỗi đó và không gì khác. Viết sai một chuỗi, trình kiểm tra sẽ phát hiện ngay lập tức: bug không bao giờ đến được với người chơi.
Khi chạy, các giá trị này là chuỗi thông thường. In chúng ra, nối chúng hoặc so sánh chúng bằng ==. Mọi điều bạn biết về chuỗi đều áp dụng được:
print(facing) -- lên
print(`facing {facing}`) -- hướng lênHãy so sánh hai mẫu bạn vừa học: bảng hằng số tạo ra một giá trị khi chạy (UserRole) chứa các thành viên, còn kiểu hợp các giá trị chuỗi cố định hoàn toàn không tạo ra giá trị nào. Không có bảng Direction, chỉ có một quy tắc mà trình kiểm tra áp dụng để xác định chuỗi nào phù hợp. Những giá trị giàu tính mô tả, tự ghi chú mà không tốn chi phí khi chạy khiến kiểu hợp các giá trị chuỗi cố định trở thành phong cách enum được ưu tiên trong code Luau.
Thử thách
DễLưu trữ một hướng chỉ có thể là một trong bốn tên.
- Viết
type Direction = "up" | "down" | "left" | "right". - Khai báo
local facing: Direction = "left". - In ra
facing, sau đó`The player moves {facing}`.
Nhấn Run Code: đầu ra hiển thị left và The player moves left.
Tự làm thử
-- 1) Định nghĩa kiểu Direction là hợp của bốn chuỗi (string)
-- 2) local facing: Direction = "left"
-- 3) In ra facing, rồi đến câu vă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 cao8Enums theo cách của Luau
Mẫu Enum trong LuauEnum số bằng bảngEnum chuỗi dưới dạng hợpDùng Enum hợp literalĐóng băng bảng hằng sốÔn tập: Enums theo cách của Luau3Bả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