Menu
CoddyTech

Aggiungere metodi alle forme

Fa parte della sezione Introduzione a Luau del percorso Lua di Coddy. Lezione 44 di 80.

Dal tuo capitolo sull’OOP in Lua sai che le tabelle possono contenere funzioni, proprio come qualsiasi altro valore. Anche le forme possono descrivere questi campi funzione: trasformando una forma in un piccolo contratto di dati e comportamento.

Un campo metodo usa la sintassi del tipo funzione che hai imparato nel capitolo sulle funzioni. Il suo primo parametro si chiama convenzionalmente self, la tabella a cui appartiene il metodo, e la forma può persino fare riferimento a sé stessa:

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

Per implementare la forma, memorizza una funzione nel campo e assegnale quel parametro self:

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

Chiamarlo significa passare tu stesso la tabella come self: greeter.greet(greeter). Tramite self, il metodo legge i campi della tabella su cui è stato chiamato.

Scrivere la tabella due volte sembra macchinoso, e conosci già il rimedio di Lua: i due punti. La prossima lezione collega la sintassi : a queste forme tipizzate.

challenge icon

Sfida

Facile

Assegna a una forma rettangolo un metodo che calcola la sua area.

  1. Scrivi type Rectangle = {width: number, height: number, area: (self: Rectangle) -> number}.
  2. Crea local rect: Rectangle con width 4, height 6 e area = function(self: Rectangle): number che restituisce self.width * self.height.
  3. Stampa rect.area(rect), poi rect.width.

Premi Esegui codice: l'output mostra 24 e 4.

Provalo tu

-- 1) tipo Rectangle con width, height e un metodo area
-- 2) rect locale: Rectangle (width 4, height 6) con area implementato
-- 3) stampa l'area, poi la larghezza

Tutte le lezioni di Introduzione a Luau

Esercitati da solo: Compilatore Luau online