Menu
Coddy logo textTech

Ajout de méthodes aux structures

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

D'après votre chapitre sur la POO en Lua, vous savez que les tables peuvent contenir des fonctions exactement comme n'importe quelle autre valeur. Les shapes peuvent aussi décrire ces champs de fonctions — transformant une shape en un petit contrat de données et de comportement.

Un champ de type méthode utilise la syntaxe de type fonction que vous avez apprise dans le chapitre sur les fonctions. Son premier paramètre est conventionnellement nommé self — la table à laquelle la méthode appartient — et la shape peut même se référer à elle-même :

type Greeter = {
    name: string,
    greet: (self: Greeter) -> string,
}

Pour implémenter la shape, stockez une fonction dans le champ et donnez-lui ce paramètre self :

local greeter: Greeter = {
    name = "Ana",
    greet = function(self: Greeter): string
        return `Hello, I'm {self.name}`
    end,
}

L'appeler signifie passer la table comme self vous-même : greeter.greet(greeter). À travers self, la méthode lit les champs de la table sur laquelle elle a été appelée.

Écrire la table deux fois semble lourd — et vous connaissez déjà le remède de Lua : le deux-points. La prochaine leçon associe la syntaxe : à ces shapes typées.

challenge icon

Défi

Facile

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

  • width de type number
  • height de type number
  • area — une méthode (self: Rectangle) -> number renvoyant width * height
  • perimeter — une méthode (self: Rectangle) -> number renvoyant 2 * (width + height)

Créez une variable rect de type Rectangle avec une largeur de 4, une hauteur de 6, et les deux méthodes implémentées (rappelez-vous du paramètre self).

Affichez, chacun sur sa propre ligne (appelez les méthodes avec la syntaxe point, en passant rect comme self) :

  1. l'aire du rectangle
  2. le périmètre du rectangle
  3. la largeur du rectangle

Essayez vous-même

-- Écrivez le code ici
-- 1) définir le type Rectangle avec deux champs number et deux méthodes
-- 2) créer rect (width 4, height 6) implémentant les deux méthodes
-- 3) afficher area, perimeter et width
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