Menu
Coddy logo textTech

La sintassi dei due punti

Fa parte della sezione Programmazione orientata agli oggetti del percorso Lua di Coddy. Lezione 3 di 70.

Scrivere counter.increment(counter) ogni volta è noioso e soggetto a errori. Lua offre un modo più semplice: l’operatore due punti (:).

Quando definisci una funzione usando i due punti, Lua aggiunge automaticamente self come primo parametro:

local player = {
    name = "Hero"
}

-- Uso dei due punti nella definizione
function player:greet()
    print("Hello, I am " .. self.name)
end

I due punti funzionano anche quando chiami la funzione. Passano automaticamente la tabella come primo argomento:

player:greet()  -- Output: Hello, I am Hero

Questo equivale a scrivere player.greet(player), ma è molto più pulito. I due punti gestiscono il parametro self da entrambe le parti: durante la definizione e durante la chiamata.

Ecco un confronto che mostra entrambi gli approcci produrre risultati identici:

local counter = { value = 0 }

-- Sintassi con il punto (self esplicito)
function counter.increment(self)
    self.value = self.value + 1
end
counter.increment(counter)

-- Sintassi con i due punti (self automatico)
function counter:decrement()
    self.value = self.value - 1
end
counter:decrement()

La sintassi con i due punti è il modo standard per definire e chiamare i metodi in Lua. Rende il codice più breve e meno ripetitivo.

challenge icon

Sfida

Facile

Crea una tabella chiamata greeter con un campo message inizializzato con un valore che riceverai come input.

Aggiungi un metodo :sayHello(name) usando la sintassi con i due punti che stampa il saluto in questo formato:

[message], [name]!

Riceverai due input:

  1. Il messaggio di saluto da memorizzare in greeter.message
  2. Un nome da passare al metodo :sayHello()

Definisci il metodo usando la sintassi con i due punti e chiamalo usando la sintassi con i due punti. Stampa il saluto formattato.

Per esempio, se il messaggio è Welcome e il nome è Luna, l'output dovrebbe essere:

Welcome, Luna!

Provalo tu

-- Leggi l'input
local message = io.read()
local name = io.read()

-- TODO: Scrivi il tuo codice qui sotto
-- 1. Crea una tabella chiamata 'greeter' con un campo 'message'
-- 2. Aggiungi un metodo :sayHello(name) usando la sintassi con i due punti
-- 3. Chiama il metodo usando la sintassi con i due punti per stampare il saluto
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 Programmazione orientata agli oggetti

Esercitati da solo: Compilatore Lua online