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 tu as appris une meilleure manière dans la partie sur la POO en Lua : les deux-points. rect:area() est exactement le même appel : Lua transmet automatiquement la table située avant les deux-points comme premier argument, self.

Les deux-points sont également utiles lors de la définition. function account:deposit(amount) déclare pour toi un premier paramètre masqué nommé 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 est implicite
end

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

Remarque que la structure déclare self explicitement, deposit: (self: Account, amount: number) -> (), même si les deux-points le masquent dans l’implémentation. Les deux-points sont du sucre syntaxique ; le paramètre est toujours présent, et le type l’explicite. Une méthode qui ne renvoie rien est typée avec le retour vide -> ().

L’appel suit la même règle que tu connais déjà : account:deposit(250) est identique à account.deposit(account, 250). Le comportement à l’exécution est le même que dans ton chapitre sur la 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 pour propriétaire "Maya" et un solde de 1500, puis attachez les deux méthodes à l’aide de la syntaxe de définition avec deux-points (function account:deposit(amount: number) …). deposit ajoute amount au solde ; getBalance renvoie le solde actuel.

En utilisant les appels avec deux-points :

  1. affichez le solde
  2. déposez 250
  3. affichez à nouveau le solde
  4. affichez le propriétaire

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, deposit 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

Entraînez-vous par vous-même : Compilateur Lua en ligne