Tabelle con funzioni
Fa parte della sezione Programmazione orientata agli oggetti del percorso Lua di Coddy. Lezione 1 di 70.
In Lua, le tabelle sono incredibilmente versatili. Oltre a memorizzare dati, possono contenere anche funzioni. Questo ti permette di raggruppare operazioni correlate, mantenendo il tuo codice organizzato e facile da gestire.
Per inserire una funzione in una tabella, ti basta assegnarla a una chiave proprio come qualsiasi altro valore:
local myTable = {
greet = function(name)
return "Hello, " .. name
end
}
print(myTable.greet("Alice")) -- Output: Hello, AlicePuoi anche definire la funzione separatamente e poi aggiungerla alla tabella:
local myTable = {}
myTable.greet = function(name)
return "Hello, " .. name
endOppure usa questa sintassi abbreviata più pulita:
local myTable = {}
function myTable.greet(name)
return "Hello, " .. name
endTutti e tre gli approcci producono lo stesso risultato. Chiami la funzione usando la notazione con il punto: myTable.greet("Alice"). Questo schema che raggruppa le funzioni con i dati è il fondamento della programmazione orientata agli oggetti in Lua.
Sfida
FacileCrea una tabella chiamata calculator che contenga quattro funzioni aritmetiche:
add(a, b)- restituisce la somma diaebsubtract(a, b)- restituisceamenobmultiply(a, b)- restituisce il prodotto diaebdivide(a, b)- restituisceadiviso perb
Riceverai tre input:
- Il nome di un'operazione (una tra:
add,subtract,multiply,divide) - Primo numero
- Secondo numero
Chiama la funzione appropriata della tabella calculator in base al nome dell'operazione e stampa il risultato.
Provalo tu
-- Leggi gli input
local operation = io.read()
local num1 = tonumber(io.read())
local num2 = tonumber(io.read())
-- TODO: Crea una tabella calculator con quattro funzioni:
-- add(a, b), subtract(a, b), multiply(a, b), divide(a, b)
-- TODO: Chiama la funzione appropriata dalla tabella calculator usando il nome dell'operazione
-- e stampa il risultatoQuesta lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Programmazione orientata agli oggetti
1Il concetto di «self»
Tabelle con funzioni«self» esplicitoLa sintassi dei due puntiPunto o due puntiRiepilogo - Spostare il punto4Progetto: Banca digitale
Configurazione del progettoMetodo di deposito2Schema del prototipo di classe
Il concetto di prototipoCollegare con __indexIl costruttore :new()Inizializzare gli attributiIstanze indipendentiRiepilogo - Fabbrica di auto5Sovraccarico degli operatori nella OOP
Sommare oggettiSottrarre oggettiConcatenare oggettiConfrontare oggetti (<, >)Ripasso - Calcoli con il portafoglio8Incapsulamento
Convenzioni di denominazioneClosure per la privacyAccesso tramite closureTabelle di sola letturaLogica di convalidaRiepilogo - Cassaforte sicura11Modelli di progettazione (base)
Funzioni factoryTabella singletonPattern IteratorObserver (listener)Riepilogo - Factory per logger3Stato e comportamento degli oggetti
Variabili di istanzaMetodi getterMetodi setterProprietà calcolateFormattazione delle stringheControlli di uguaglianzaRiepilogo - Voto dello studente6Fondamenti dell'ereditarietà
Configurare l'ereditarietàEreditare i metodiEstendere il costruttoreAggiungere metodi alla classe figliaCondiviso vs specificoRiepilogo - Gerarchia delle formeEsercitati da solo: Compilatore Lua online