Menu
CoddyTech

Usare una funzione generica

Fa parte della sezione Introduzione a Luau del percorso Lua di Coddy. Lezione 63 di 80.

Non dici mai a identity che cosa sia T: il controllo lo determina da solo. Questa è l’inferenza dei tipi: a ogni punto di chiamata, Luau esamina l’argomento e determina T:

local word = identity("Luau")   -- T dedotto come string
local count = identity(12)      -- T dedotto come number
local flag = identity(false)    -- T dedotto come boolean

Ogni chiamata è indipendente: T può essere una stringa in una riga e un numero in quella successiva. Il risultato inferito è sicuro quanto un’annotazione scritta a mano: per il controllo, word è una string, con completamento automatico completo e controllo degli errori.

Una differenza importante rispetto a TypeScript: TS ti permette di forzare il tipo nel punto di chiamata con identity<number>(5). Luau non ammette argomenti di tipo nel punto di chiamata. Quella riga non è una sintassi speciale, quindi Luau interpreta le parentesi angolari come operatori di confronto minore di/maggiore di e il codice non funziona. Se vuoi specificare esplicitamente il tipo, annota invece la variabile:

local count: number = identity(12)

Puoi osservare l’inferenza in azione con uno strumento familiare: typeof restituisce il nome del tipo a runtime di un valore, quindi print(typeof(identity(12))) stampa number: il valore ha attraversato la funzione generica senza subire alcuna modifica.

challenge icon

Sfida

Facile

Lascia che il verificatore determini T a ogni chiamata.

  1. Sotto la funzione, memorizza identity("Oslo") in local city e identity(42) in local floors, senza annotazioni.
  2. Stampa typeof(city), poi typeof(floors).

Premi Esegui codice: l'output mostra string e number.

Provalo tu

-- La funzione generica identity della lezione precedente
local function identity<T>(value: T): T
    return value
end

-- 1) city e floors dalle chiamate a identity, senza annotazioni
-- 2) stampa il typeof di ciascuno

Tutte le lezioni di Introduzione a Luau

Esercitati da solo: Compilatore Luau online