Mở rộng cấu trúc
Thuộc phần Giới thiệu về Luau trong hành trình Lua của Coddy. Bài học 43 trên 80.
Các hình dạng có liên quan thường dùng chung trường. Mọi Admin cũng là một User; sao chép các trường dùng chung vào cả hai khai báo dễ khiến chúng khác nhau theo thời gian.
Bạn đã gặp toán tử giao & khi kết hợp các bí danh. Toán tử này hoạt động y hệt với các hình dạng. A & B có nghĩa là “có mọi thứ từ A và mọi thứ từ B”:
type User = {name: string, age: number}
type Admin = User & {level: number}
-- Admin giờ cần có: name, age VÀ level
local root: Admin = {name = "Root", age = 35, level = 9}TypeScript cần từ khóa extends riêng cho các giao diện, còn Luau không cần gì mới: phép giao đã làm được việc đó. Bạn có thể nối nhiều phần:
type Contact = {email: string}
type Developer = User & Contact & {yearsExperience: number}Đừng nhầm & với |: hợp A | B là hình dạng này hoặc hình dạng kia, còn giao A & B phải thỏa mãn cả hai cùng lúc. Và vì Admin có mọi trường của User, bạn có thể truyền một giá trị Admin ở bất cứ nơi nào cần một User.
Thử thách
DễMở rộng kiểu nhân viên thành kiểu quản lý.
- Viết
type Employee = {name: string, department: string}vàtype Manager = Employee & {teamSize: number}. - Tạo
local teamLead: Manager = {name = "Alice Johnson", department = "Engineering", teamSize = 8}. - In ra
`{teamLead.name} manages {teamLead.teamSize} people`, sau đó in rateamLead.department.
Nhấn Run Code: đầu ra hiển thị Alice Johnson manages 8 people và Engineering.
Tự làm thử
-- 1) khai báo kiểu Employee, rồi khai báo kiểu Manager = Employee & {...}
-- 2) khai báo local teamLead: Manager = {...}
-- 3) in ra dòng tóm tắt, rồi đến bộ phậ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