Menu
Coddy logo textTech

Che cos’è una metatabella?

Fa parte della sezione Logica e flusso del percorso Lua di Coddy. Lezione 16 di 54.

Una metatable è semplicemente una normale tabella Lua, ma ha uno scopo speciale. Quando associ una metatable a un'altra tabella (chiamiamola tabella "principale"), puoi modificare il comportamento di quella tabella principale quando vengono eseguite determinate operazioni su di essa.

Pensala così: normalmente, se provi a sommare due tabelle usando l'operatore +, Lua non sa cosa fare e ti darà un errore. Ma con una metatabella, puoi definire cosa significa l'addizione per le tue tabelle. Puoi fare in modo che sommi i valori corrispondenti, concateni i loro contenuti o faccia qualsiasi altra cosa abbia senso per il tuo programma.

I metatable funzionano definendo funzioni speciali chiamate metodi metamorfici. Questi metodi metamorfici hanno nomi specifici che iniziano con due caratteri di sottolineatura, come __add per l'addizione o __index per cercare chiavi mancanti. Quando Lua incontra un'operazione su una tabella che ha un metatable, controlla se il metatable contiene il metodo metamorfico corrispondente e lo usa per determinare cosa dovrebbe accadere.

Questo concetto apre la strada a possibilità come creare tipi di dati personalizzati con comportamenti propri, implementare schemi orientati agli oggetti, proteggere le tabelle da modifiche indesiderate e molto altro. Nelle prossime lezioni imparerai come collegare metatabelle alle tabelle e usare i metametodi per personalizzarne il comportamento.

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 Logica e flusso

Esercitati da solo: Compilatore Lua online