Menu
Coddy logo textTech

Self e metodi con i due punti

Fa parte della sezione Introduzione a Luau del percorso Lua di Coddy. Lezione 43 di 73.

Scrivere rect.area(rect) funziona, ma hai imparato un modo migliore in Lua OOP: i due punti. rect:area() è esattamente la stessa chiamata: Lua passa automaticamente la tabella prima dei due punti come primo argomento, self.

I due punti aiutano anche nel punto di definizione. function account:deposit(amount) dichiara per te un primo parametro nascosto chiamato self:

type Account = {
    owner: string,
    balance: number,
    deposit: (self: Account, amount: number) -> (),
    getBalance: (self: Account) -> number,
}

local account = {owner = "Maya", balance = 1500}

function account:deposit(amount: number)
    self.balance += amount -- self è implicito
end

function account:getBalance(): number
    return self.balance
end

Nota come la struttura dichiari self esplicitamente, deposit: (self: Account, amount: number) -> (), anche se i due punti lo nascondono nell'implementazione. I due punti sono zucchero sintattico; il parametro è comunque presente e il tipo lo esplicita. Un metodo che non restituisce nulla è tipizzato con il valore di ritorno vuoto -> ().

Per le chiamate vale la stessa regola che già conosci: account:deposit(250) è identico a account.deposit(account, 250). Lo stesso comportamento a runtime del capitolo OOP: Luau aggiunge semplicemente i tipi.

challenge icon

Sfida

Facile

Crea un alias di tipo chiamato Account con:

  • owner di tipo string
  • balance di tipo number
  • deposit: (self: Account, amount: number) -> ()
  • getBalance: (self: Account) -> number

Crea una tabella account con proprietario "Maya" e saldo 1500, quindi aggiungi entrambi i metodi usando la sintassi di definizione con i due punti (function account:deposit(amount: number) …). deposit aggiunge amount al saldo; getBalance restituisce il saldo corrente.

Usando le chiamate con i due punti:

  1. stampa il saldo
  2. deposita 250
  3. stampa di nuovo il saldo
  4. stampa il proprietario

Provalo tu

-- Scrivi il codice qui
-- 1) definisci il tipo Account (i metodi includono esplicitamente self nel tipo)
-- 2) crea la tabella dell'account, poi aggiungi deposit/getBalance usando la sintassi con i due punti
-- 3) stampa il saldo, deposita 250, stampa di nuovo il saldo, stampa owner
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 Introduzione a Luau

Esercitati da solo: Compilatore Luau online