Menu
Coddy logo textTech

Il problema risolto dai generics

Fa parte della sezione Introduzione a Luau del percorso Lua di Coddy. Lezione 57 di 73.

Immagina di aver bisogno di una funzione che restituisca semplicemente qualsiasi valore le passi: una funzione identità. Con i tipi che conosci finora, hai due opzioni, e sono entrambe problematiche.

Opzione uno: scrivere una copia separata per ogni tipo. I corpi sono identici; cambiano solo le annotazioni:

local function echoNumber(value: number): number
    return value
end

local function echoString(value: string): string
    return value
end

Ogni nuovo tipo significa un'altra copia, e un bug corretto in una deve essere corretto in tutte. È proprio questo il tipo di duplicazione che scrivi funzioni per evitare.

Opzione due: riunirle in un'unica funzione tipizzata con any:

local function echo(value: any): any
    return value
end

Ora una sola funzione gestisce tutto, ma hai sacrificato la sicurezza dei tipi. Quando chiami echo("hello"), il controllo dei tipi non sa più che il risultato è una stringa. Conosce solo any, quindi il completamento automatico non funziona più e gli errori di tipo passano inosservati: si perde il legame tra ciò che entra e ciò che esce.

Quello che vuoi davvero è una funzione che funzioni con ogni tipo e ricordi quale tipo è stato usato in ogni chiamata. È proprio questo che offrono i generici, e sono l'argomento di questo capitolo.

Provalo tu

Questa lezione non include una sfida di codice.

quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Introduzione a Luau

Esercitati da solo: Compilatore Luau online