Forme e tabelle libere a confronto
Fa parte della sezione Introduzione a Luau del percorso Lua di Coddy. Lezione 40 di 73.
Ora hai due modi per lavorare con le tabelle record: quello informale che hai sempre usato in Lua e le strutture dichiarate. Vale la pena fermarsi un momento per vedere cosa offre ciascun metodo.
Una tabella informale accetta qualsiasi cosa. Questa flessibilità ha un prezzo: se scrivi male un campo (user.nmae), ottieni silenziosamente nil; se dimentichi un campo, il bug emerge molto più avanti, in fase di esecuzione, nel codice che per primo accede al campo mancante:
local user = {name = "Ana", age = 20}
print(user.nmae) -- tabella non vincolata: stampa nil senza segnalare erroriDichiara una struttura e questi errori passano dalla fase di esecuzione al momento della scrittura. Il verificatore segnala l'errore di battitura appena lo scrivi, il tuo editor può completare automaticamente i nomi dei campi e la dichiarazione type funge anche da documentazione del contenuto della tabella:
type User = {name: string, age: number}
local user: User = {name = "Ana", age = 20}
print(user.nmae) -- ✗ errore di tipo: la chiave 'nmae' non è stata trovata in UserSe provieni da TypeScript, tieni presente che Luau non ha la parola chiave interface: type gestisce tutte le strutture. Inoltre, non esiste la "fusione delle dichiarazioni": dichiarare due tipi con lo stesso nome nello stesso ambito è un errore, quindi ogni struttura ha una sola definizione.
Le strutture di Luau sono strutturali: qualsiasi tabella con i campi corretti e i tipi corretti corrisponde, indipendentemente da dove o come è stata creata. Anche le tabelle informali hanno il loro posto: gli script veloci e i dati realmente dinamici non hanno bisogno di una struttura dichiarata. Per qualsiasi dato passato tra funzioni, però, una struttura individua gli errori quando correggerli costa ancora poco.
Provalo tu
Questa lezione non include una sfida di codice.
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