Menu
Coddy logo textTech

La syntaxe avec deux-points

Fait partie de la section Programmation orientée objet du Journey Lua de Coddy. Leçon 3 sur 70.

Écrire counter.increment(counter) à chaque fois est fastidieux et source d’erreurs. Lua offre une solution plus élégante : l’opérateur deux-points (:).

Lorsque tu définis une fonction à l’aide de deux-points, Lua ajoute automatiquement self comme premier paramètre :

local player = {
    name = "Hero"
}

-- Utilisation des deux-points dans la définition
function player:greet()
    print("Hello, I am " .. self.name)
end

Les deux-points fonctionnent également lors de l’appel de la fonction. Ils transmettent automatiquement la table comme premier argument :

player:greet()  -- Sortie : Hello, I am Hero

Cela équivaut à écrire player.greet(player), mais de façon beaucoup plus claire. Les deux-points gèrent le paramètre self aux deux extrémités : lors de la définition et lors de l’appel.

Voici une comparaison montrant que les deux approches produisent des résultats identiques :

local counter = { value = 0 }

-- Syntaxe point (self explicite)
function counter.increment(self)
    self.value = self.value + 1
end
counter.increment(counter)

-- Syntaxe deux-points (self automatique)
function counter:decrement()
    self.value = self.value - 1
end
counter:decrement()

La syntaxe avec deux-points est la manière standard de définir et d’appeler des méthodes en Lua. Elle rend votre code plus court et moins répétitif.

challenge icon

Défi

Facile

Créez une table nommée greeter avec un champ message initialisé à une valeur que vous recevrez en entrée.

Ajoutez une méthode :sayHello(name) utilisant la syntaxe avec deux-points qui affiche le message d’accueil dans ce format :

[message], [name]!

Vous recevrez deux entrées :

  1. Le message d’accueil à stocker dans greeter.message
  2. Un nom à transmettre à la méthode :sayHello()

Définissez la méthode à l’aide de la syntaxe avec deux-points et appelez-la en utilisant la syntaxe avec deux-points. Affichez le message d’accueil formaté.

Par exemple, si le message est Welcome et le nom est Luna, la sortie doit être :

Welcome, Luna!

Essayez vous-même

-- Lire l'entrée
local message = io.read()
local name = io.read()

-- TODO: Écrivez votre code ci-dessous
-- 1. Créez une table nommée 'greeter' avec un champ 'message'
-- 2. Ajoutez une méthode :sayHello(name) en utilisant la syntaxe des deux-points
-- 3. Appelez la méthode en utilisant la syntaxe des deux-points pour afficher la salutation
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 Programmation orientée objet

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