Menu
Coddy logo textTech

Dodawanie metod do kształtów

Część sekcji Wprowadzenie do Luau ścieżki Lua w Coddy. Lekcja 42 z 73.

Z rozdziału o OOP w Lua wiesz, że tabele mogą przechowywać funkcje, tak jak każdą inną wartość. Kształty mogą opisywać również te pola funkcyjne: zmieniając kształt w niewielki kontrakt danych i zachowania.

Pole metody używa składni typu funkcji poznanej w rozdziale o funkcjach. Jej pierwszy parametr zgodnie z konwencją nazywa się self i oznacza tabelę, do której należy metoda. Kształt może nawet odwoływać się do samego siebie:

type Greeter = {
    name: string,
    greet: (self: Greeter) -> string,
}

Aby zaimplementować kształt, umieść funkcję w polu i przekaż jej parametr self:

local greeter: Greeter = {
    name = "Ana",
    greet = function(self: Greeter): string
        return `Hello, I'm {self.name}`
    end,
}

Wywołanie tej metody oznacza samodzielne przekazanie tabeli jako self: greeter.greet(greeter). Za pośrednictwem self metoda odczytuje pola tabeli, na której została wywołana.

Dwukrotne zapisywanie tabeli wydaje się niezgrabne, a znasz już rozwiązanie Lua: dwukropek. W następnej lekcji połączymy składnię : z tymi typowanymi kształtami.

challenge icon

Wyzwanie

Łatwy

Utwórz alias typu o nazwie Rectangle z:

  • width typu number
  • height typu number
  • area: metodą (self: Rectangle) -> number, która zwraca width * height
  • perimeter: metodą (self: Rectangle) -> number, która zwraca 2 * (width + height)

Utwórz zmienną rect typu Rectangle o szerokości 4 i wysokości 6, implementując obie metody (pamiętaj o parametrze self).

Wyświetl, każdą wartość w osobnym wierszu (wywołaj metody za pomocą składni kropkowej, przekazując rect jako self):

  1. pole prostokąta
  2. obwód prostokąta
  3. szerokość prostokąta

Spróbuj swoich sił

-- Napisz tutaj kod
-- 1) zdefiniuj typ Rectangle z dwoma polami liczbowymi i dwiema metodami
-- 2) utwórz rect (width 4, height 6), implementując obie metody
-- 3) wypisz area, perimeter i width
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Wprowadzenie do Luau

Poćwicz samodzielnie: Kompilator Luau online