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.
Sfida
FacileCrea un alias di tipo chiamato Rectangle con:
widthdi tiponumberheightdi tiponumberarea: un metodo(self: Rectangle) -> numberche restituiscewidth * heightperimeter: un metodo(self: Rectangle) -> numberche restituisce2 * (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):
- l'area del rettangolo
- il perimetro del rettangolo
- 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
Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Introduzione a Luau
1Per iniziare con Luau
Che cos'è Luau?Perché usare Luau?Il tuo primo codice LuauVerifica dei tipi e modalità di erroreRiepilogo: introduzione a Luau4Lavorare con le funzioni
Tipizzare i parametri e i valori restituitiTipizzare le funzioni anonimeFunzioni che non restituiscono nullaParametri opzionaliValori predefiniti dei parametriFunzioni variadicheDefinire i tipi di funzioneRiepilogo: funzioni tipizzate2Tipi fondamentali
Tipi di base: num, str, boolIl tipo 'any': una via di fugaIl tipo 'unknown'Nil e tipi opzionaliL'inferenza dei tipi in azioneAnnotazioni esplicite dei tipiRipasso: esercizi sui tipi fondamentali5Alias, unioni e intersezioni
Alias di tipo per i primitiviTipi unioneLavorare con i tipi unioneTipi letteraliTipi intersezioneCombinare gli alias di tipoRiepilogo: combinazioni avanzate di tipi3Tabelle tipizzate: array e mappe
Array tipizzatiAggiungere e leggere elementiChe cos'è un tipo Map?Dichiarare e accedere alle mappeIterare sulle tabelleTabelle con strutture misteArray tipizzati multidimensionalitable.unpack e argomenti variabiliRiepilogo: array e mappe6Tipizzare le forme delle tabelle
Annotazioni inline delle formeAlias di tipo per le formeProprietà opzionaliForme e tabelle libere a confrontoEstendere le formeAggiungere metodi alle formeSelf e metodi con i due puntiRiepilogo: definire le forme delle tabelleEsercitati da solo: Compilatore Luau online