Menu
CoddyTech

Array generici

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

I generici diventano davvero utili quando si usano le tabelle. Sai già scrivere 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]
end

Passa un {string} e il verificatore deduce T = string, quindi il risultato è una stringa. Passa un {number} e il risultato è un numero. Una sola 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 correttamente: «un T oppure nil». Il verificatore solleciterà chi chiama la funzione a gestire il caso nil prima di usare il risultato: è proprio il tipo di bug che vuoi individuare con un linguaggio tipizzato.

challenge icon

Sfida

Facile

Ottieni il primo elemento di qualsiasi array.

  1. Scrivi local function first<T>(items: {T}): T? che restituisce items[1].
  2. Dichiara local fruits: {string} = {"apple", "banana"} e local empty: {number} = {}.
  3. Stampa first(fruits), poi first(empty).

Premi Esegui codice: l'output mostra apple e nil.

Provalo tu

-- 1) first<T>(items: {T}): T?
-- 2) fruits: {string} e un {number} vuoto
-- 3) stampa il primo elemento di ciascuno

Tutte le lezioni di Introduzione a Luau

Esercitati da solo: Compilatore Luau online