Thêm phương thức vào 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 44 trên 80.
Từ chương Lua OOP, bạn đã biết bảng có thể chứa hàm giống như mọi giá trị khác. Kiểu cũng có thể mô tả các trường hàm đó, biến kiểu thành một hợp đồng nhỏ về dữ liệu và hành vi.
Trường phương thức dùng cú pháp kiểu hàm mà bạn đã học trong chương về hàm. Tham số đầu tiên thường được đặt tên là self, tức bảng chứa phương thức đó, và kiểu thậm chí có thể tham chiếu đến chính nó:
type Greeter = {
name: string,
greet: (self: Greeter) -> string,
}Để triển khai kiểu này, hãy lưu một hàm vào trường và thêm tham số self đó:
local greeter: Greeter = {
name = "Ana",
greet = function(self: Greeter): string
return `Hello, I'm {self.name}`
end,
}Để gọi phương thức, bạn cần tự truyền bảng làm self: greeter.greet(greeter). Thông qua self, phương thức đọc các trường của bảng được gọi.
Viết bảng hai lần khá rườm rà, và bạn đã biết cách Lua giải quyết việc này: dấu hai chấm. Bài học tiếp theo sẽ kết nối cú pháp : với các kiểu có kiểu dữ liệu này.
Thử thách
DễThêm cho hình chữ nhật một phương thức tính diện tích.
- Viết
type Rectangle = {width: number, height: number, area: (self: Rectangle) -> number}. - Tạo
local rect: Rectanglevới chiều rộng4, chiều cao6vàarea = function(self: Rectangle): numbertrả vềself.width * self.height. - In ra
rect.area(rect), rồirect.width.
Nhấn Chạy Code: đầu ra hiển thị 24 và 4.
Tự làm thử
-- 1) Khai báo type Rectangle với width, height và phương thức area
-- 2) Khai báo local rect: Rectangle (width 4, height 6) và triển khai area
-- 3) In ra diện tích, rồi đến chiều rộng
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à Map6Định kiểu cấu trúc bảng
Chú thích cấu trúc trực tiếpBí danh kiểu cho cấu trúcThuộc tính tùy chọnCấu trúc và bảng không ràng buộcMở rộng cấu trúcThêm phương thức vào cấu trúcPhương thức self và dấu hai chấmÔn tập: định nghĩa cấu trúc bảngTự luyện tập: Trình biên dịch Luau online