Menu
CoddyTech

Una funzione identità generica

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

Ecco la funzione identità fatta nel modo giusto, come funzione generica:

local function identity<T>(value: T): T
    return value
end

<T> dopo il nome della funzione dichiara un parametro di tipo: un segnaposto che indica «un tipo qualsiasi, deciso a ogni chiamata». Nella firma usi T proprio come un tipo reale: il parametro è un T e la funzione restituisce un T.

Usare lo stesso T per l'input e l'output è tutto il trucco. Li collega tra loro. Chiama identity("hello") e il verificatore decide T = string per quella chiamata, quindi il risultato è una string. Chiama identity(42) e T = number, quindi il risultato è un number. Un solo corpo, ogni tipo, senza perdere nulla.

T è solo un nome convenzionale (abbreviazione di «Tipo»): <Item> o <Value> funzionano altrettanto bene. E, come sempre in Luau, le parentesi angolari esistono solo per il verificatore: a runtime, questa è la semplice funzione Lua function identity(value) return value end.

challenge icon

Sfida

Facile

Scrivi una funzione che restituisca qualsiasi valore mantenendone intatto il tipo.

  1. Scrivi local function identity<T>(value: T): T che restituisca value.
  2. Dichiara local luckyNumber: number = identity(7) e local greeting: string = identity("Hello, Luau!").
  3. Stampa luckyNumber, poi greeting.

Premi Esegui codice: l'output mostra 7 e Hello, Luau!.

Provalo tu

-- 1) identity<T>(value: T): T
-- 2) luckyNumber e greeting dalle chiamate a identity
-- 3) stampa entrambi

Tutte le lezioni di Introduzione a Luau

Esercitati da solo: Compilatore Luau online