Menu
Coddy logo textTech

Aggiungere metodi alle forme

Fa parte della sezione Introduzione a Luau del percorso Lua di Coddy. Lezione 42 di 73.

Dal 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 se 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,
}

Per chiamarlo devi 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à la soluzione di Lua: i due punti. La prossima lezione collega la sintassi : a queste forme tipizzate.

challenge icon

Sfida

Facile

Crea un alias di tipo chiamato Rectangle con:

  • width di tipo number
  • height di tipo number
  • area: un metodo (self: Rectangle) -> number che restituisce width * height
  • perimeter: un metodo (self: Rectangle) -> number che restituisce 2 * (width + height)

Crea una variabile rect di tipo Rectangle con width 4, height 6 ed entrambi i metodi implementati (ricorda il parametro self).

Stampa, ciascuno su una riga separata (chiama i metodi con la sintassi a punto, passando rect come self):

  1. l'area del rettangolo
  2. il perimetro del rettangolo
  3. la larghezza del rettangolo

Provalo tu

-- Scrivi il codice qui
-- 1) definisci il tipo Rectangle con due campi numerici e due metodi
-- 2) crea rect (width 4, height 6) implementando entrambi i metodi
-- 3) stampa area, perimeter e width
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Introduzione a Luau

Esercitati da solo: Compilatore Luau online