Menu
CoddyTech

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.

challenge icon

Thử thách

Dễ

Thêm cho hình chữ nhật một phương thức tính diện tích.

  1. Viết type Rectangle = {width: number, height: number, area: (self: Rectangle) -> number}.
  2. Tạo local rect: Rectangle với chiều rộng 4, chiều cao 6 và area = function(self: Rectangle): number trả về self.width * self.height.
  3. In ra rect.area(rect), rồi rect.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

Tự luyện tập: Trình biên dịch Luau online