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.
Sfida
FacileAssegna a una forma rettangolo un metodo che calcola la sua area.
- Scrivi
type Rectangle = {width: number, height: number, area: (self: Rectangle) -> number}. - Crea
local rect: Rectanglecon width4, height6earea = function(self: Rectangle): numberche restituisceself.width * self.height. - Stampa
rect.area(rect), poirect.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
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 parametri e valori restituitiTipizzare le funzioni anonimeFunzioni che non restituiscono nullaParametri opzionaliValori predefiniti dei parametriValori predefiniti per i booleaniFunzioni variadicheDefinire i tipi di funzioneRiepilogo: funzioni tipizzate7Progetto: Gestore di attività tipizzato
Progetto: La struttura di un'attivitàFunzione per aggiungere un'attività2Tipi fondamentali
Numero, stringa e booleanoIl tipo 'any': una via di fugaIl tipo 'unknown'Tipi nil e opzionaliL’inferenza dei tipi in praticaAnnotazioni 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 forme misteLeggere una grigliaCreare una grigliatable.unpackRiepilogo: 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