Menu
Coddy logo textTech

Méthodes avec Self et deux-points

Fait partie de la section Introduction à Luau du Journey Lua de Coddy — leçon 43 sur 73.

Écrire rect.area(rect) fonctionne, mais vous avez appris un meilleur moyen dans le chapitre Luau POO : les deux-points (colon). rect:area() est exactement le même appel — Lua passe la table située avant les deux-points comme premier argument, self, automatiquement.

Les deux-points aident aussi au niveau de la définition. function account:deposit(amount) déclare un premier paramètre caché nommé self pour vous :

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 est implicite
end

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

Remarquez comment la forme déclare self explicitementdeposit: (self: Account, amount: number) -> () — même si le deux-points le masque dans l'implémentation. Le deux-points est du sucre syntaxique ; le paramètre est toujours là, et le type le détaille. Une méthode qui ne renvoie rien est typée avec un retour vide -> ().

L'appel suit la même règle que vous connaissez déjà : account:deposit(250) est identique à account.deposit(account, 250). Le même comportement à l'exécution que dans votre chapitre POO — Luau ajoute simplement des types par-dessus.

challenge icon

Défi

Facile

Créez un alias de type nommé Account avec :

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

Créez une table account avec owner "Maya" et balance 1500, puis attachez les deux méthodes en utilisant la syntaxe de définition avec deux-points (function account:deposit(amount: number) …). deposit ajoute amount au balance ; getBalance renvoie le balance actuel.

En utilisant les appels avec deux-points :

  1. imprimez le balance
  2. déposez 250
  3. imprimez le balance à nouveau
  4. imprimez l'owner

Essayez vous-même

-- Écrivez le code ici
-- 1) définir le type Account (les méthodes prennent self explicitement dans le type)
-- 2) créer la table account, puis attacher deposit/getBalance avec la syntaxe deux-points
-- 3) afficher balance, déposer 250, afficher balance à nouveau, afficher owner
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Introduction à Luau