Array generici
Fa parte della sezione Introduzione a Luau del percorso Lua di Coddy. Lezione 60 di 73.
I generics diventano davvero utili quando entrano in gioco le tabelle. Scrivi già array tipizzati come {number} o {string}. All'interno di una funzione generica, il tipo dell'elemento può essere semplicemente T, e {T} significa «un array di qualunque tipo risulti essere T».
Ecco l'esempio classico: recuperare il primo elemento di un array qualsiasi:
local function first<T>(items: {T}): T?
return items[1]
endPassa un {string} e il controllo deduce T = string, quindi il risultato è una stringa. Passa un {number} e il risultato è un numero. Una funzione sostituisce un'intera famiglia di copie specifiche per tipo.
Osserva attentamente il tipo restituito: è T?, non T. Un array può essere vuoto e, in tal caso, items[1] è nil: il tipo opzionale che hai incontrato prima lo indica chiaramente: «un T oppure nil». Il controllo ti inviterà a gestire il caso nil prima di usare il risultato, proprio il tipo di errore che vuoi individuare con un linguaggio tipizzato.
Sfida
FacileCrea una funzione generica chiamata first che:
- dichiara un parametro di tipo
T - accetta un parametro chiamato
itemsdi tipo{T} - restituisce il primo elemento, con tipo restituito
T?(ènilper un array vuoto)
Crea questi array tipizzati:
fruitsdi tipo{string}con"apple","banana","cherry"scoresdi tipo{number}con10,20,30,40flagsdi tipo{boolean}confalse,trueemptydi tipo{string}senza elementi
Stampa il risultato della chiamata a first con ciascun array, in quest'ordine, ciascuno su una riga separata.
Provalo tu
-- Scrivi il codice qui
-- 1) definisci first<T>(items: {T}): T? che restituisce items[1]
-- 2) crea fruits: {string}, scores: {number}, flags: {boolean},
-- e un array {string} vuoto
-- 3) stampa first(...) di ogni array, in quest'ordine
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 tabelle9Generics: una prima occhiata
Il problema risolto dai genericsUna funzione identità genericaUsare una funzione genericaArray genericiAlias di tipo genericiRiepilogo: funzioni genericheEsercitati da solo: Compilatore Luau online