Firme di indice
Fa parte della sezione Introduzione a Luau del percorso Lua di Coddy. Lezione 78 di 80.
Hai incontrato tipi mappa come {[string]: number} nel capitolo sulle tabelle: una firma di indice: qualsiasi chiave stringa corrisponde a un valore numerico. Sono utili quando le chiavi non sono note mentre scrivi il codice: contatori, impostazioni, cache, punteggi: qualsiasi cosa venga creata in fase di esecuzione.
type Counts = {[string]: number}
local counts: Counts = {}
counts["potion"] = 3 -- è consentita qualsiasi chiave di tipo stringa
counts["sword"] = 1
counts["potion"] += 1 -- i valori vengono verificati come numeriQuando lavori con le mappe, sono importanti due fatti relativi all'esecuzione. Primo, leggere una chiave a cui non è mai stato assegnato un valore restituisce nil: il classico schema di conteggio gestisce questo caso con or, trasformando il valore «mancante» in 0:
counts[item] = (counts[item] or 0) + 1Secondo, pairs() scorre le chiavi di una mappa senza un ordine garantito: eseguendo lo stesso programma due volte, le chiavi potrebbero essere visitate in ordine diverso. Quando l'output deve essere prevedibile, raccogli le chiavi in un array, applica table.sort e scorri invece l'array ordinato:
local keys: {string} = {}
for key in pairs(counts) do
table.insert(keys, key)
end
table.sort(keys)
for _, key in ipairs(keys) do
print(`{key}: {counts[key]}`)
endSfida
FacileConserva i punteggi dei giocatori di cui non conosci in anticipo i nomi.
- Scrivi
type Scores = {[string]: number}e crealocal scores: Scores = {}. - Aggiungi i punti:
scores["mia"] = (scores["mia"] or 0) + 5, poi fai lo stesso per"leo"con3. - Stampa
scores["mia"],scores["leo"]escores["zed"].
Premi Run Code: l'output mostra 5, 3 e nil.
Provalo tu
-- 1) type Scores = {[string]: number}, poi local scores: Scores = {}
-- 2) aggiungi 5 punti per "mia" e 3 per "leo"
-- 3) stampa mia, leo e zed
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 mappeEsercitati da solo: Compilatore Luau online