Ajout de méthodes aux structures
Fait partie de la section Introduction à Luau du Journey Lua de Coddy. Leçon 44 sur 80.
Dans ton chapitre sur la POO en Lua, tu as appris que les tables peuvent contenir des fonctions, comme n’importe quelle autre valeur. Les formes peuvent aussi décrire ces champs de fonction : une forme devient ainsi un petit contrat de données et de comportement.
Un champ de méthode utilise la syntaxe de type fonction que tu as apprise dans le chapitre sur les fonctions. Son premier paramètre s’appelle conventionnellement self, la table à laquelle appartient la méthode, et la forme peut même se référencer elle-même :
type Greeter = {
name: string,
greet: (self: Greeter) -> string,
}Pour implémenter la forme, stocke une fonction dans le champ et donne-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 que tu passes toi-même la table comme self : greeter.greet(greeter). Grâce à self, la méthode lit les champs de la table sur laquelle elle a été appelée.
Écrire la table deux fois semble maladroit, et tu connais déjà le remède de Lua : les deux-points. La prochaine leçon relie la syntaxe : à ces formes typées.
Défi
FacileAjoute à une forme rectangle une méthode qui calcule son aire.
- Écris
type Rectangle = {width: number, height: number, area: (self: Rectangle) -> number}. - Crée
local rect: Rectangleavec une largeur de4, une hauteur de6etarea = function(self: Rectangle): numberqui renvoieself.width * self.height. - Affiche
rect.area(rect), puisrect.width.
Appuie sur Run Code : le résultat affiche 24 et 4.
Essayez vous-même
-- 1) type Rectangle avec width, height et une méthode area
-- 2) rect local : Rectangle (width 4, height 6) avec area implémentée
-- 3) afficher l’aire, puis la largeur
Toutes les leçons de Introduction à Luau
1Premiers pas avec Luau
Qu'est-ce que Luau ?Pourquoi utiliser Luau ?Votre premier code LuauVérification de type et modes d'erreurRécapitulatif : Introduction à Luau4Travailler avec les fonctions
Typer les paramètres et les valeurs de retourTyper les fonctions anonymesFonctions sans valeur de retourParamètres optionnelsValeurs par défaut des paramètresValeurs par défaut pour les booléensFonctions variadiquesDéfinir des types de fonctionsRécapitulatif : fonctions typées7Projet : gestionnaire de tâches typé
Projet : la structure d’une tâcheFonction pour ajouter une tâche2Types fondamentaux
Nombre, chaîne de caractères et booléenLe type « any » : une échappatoireLe type « unknown »Types nil et optionnelsL’inférence de types en actionAnnotations de type explicitesRécapitulatif : exercices sur les types fondamentaux5Alias, unions et intersections
Alias de types pour les types primitifsTypes unionsTravailler avec les types unionsTypes littérauxTypes intersectionsCombinaison d'alias de typesRécapitulatif : Combinaisons de types avancées3Tables typées : tableaux et maps
Tableaux typésAjouter et lire des élémentsQu’est-ce qu’un type Map ?Déclarer et accéder aux mapsParcourir les tablesTables de formes mixtesLire une grilleConstruire une grilletable.unpackRécapitulatif : tableaux et maps6Typage des structures de tables
Annotations de structures en ligneAlias de types pour les structuresPropriétés optionnellesStructures vs tables libresExtension de structuresAjout de méthodes aux structuresMéthodes avec Self et deux-pointsRécapitulatif : Définir des structures de tablesEntraînez-vous par vous-même : Compilateur Luau en ligne