Enum số bằng bảng
Thuộc phần Giới thiệu về Luau trong hành trình Lua của Coddy. Bài học 56 trên 80.
Đây là mẫu bảng hằng số đầy đủ. Chọn tên bảng theo PascalCase, gán một số cụ thể cho mỗi thành viên, rồi từ đó code sẽ dùng tên:
local UserRole = {
Admin = 1,
Editor = 2,
Viewer = 3,
}Khác với enum của TypeScript, các số không tự động tăng. Bạn tự chọn từng giá trị. Bắt đầu từ 1 rất hợp với quy ước của Lua, nhưng cách nào cũng được, chẳng hạn các mã kiểu HTTP như 200 và 404.
Các thành viên rất hữu ích khi so sánh. Một hàm nhận vai trò có thể rẽ nhánh dựa trên các hằng số có tên thay vì các số rời rạc:
local function checkPermissions(role: number)
if role == UserRole.Admin then
print("Full access granted")
elseif role == UserRole.Editor then
print("Edit access granted")
else
print("View access only")
end
endLưu ý tham số có kiểu number: chỉ dùng mẫu bảng thì chưa thể giới hạn những số nào được phép. Bài học tiếp theo sẽ giới thiệu kiểu hợp literal để tạo ra chính xác sự đảm bảo đó.
Thử thách
DễĐặt tên cho ba mức độ khó bằng một bảng hằng số.
- Tạo
local Level = {Easy = 1, Normal = 2, Hard = 3}. - Viết
local function describeLevel(level: number): stringđể trả về"Relaxed"choLevel.Easy,"Standard"choLevel.Normal, và"Brutal"trong trường hợp còn lại. - In ra
Level.Hard, sau đó làdescribeLevel(Level.Normal).
Nhấn Chạy code: đầu ra hiển thị 3 và Standard.
Tự làm thử
-- 1) bảng hằng số (constant) Level (Easy = 1, Normal = 2, Hard = 3)
-- 2) hàm (function) describeLevel(level: number): string dùng if/elseif/else
-- 3) in ra Level.Hard, rồi gọi describeLevel(Level.Normal)
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