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 propose une façon plus propre : l'opérateur colon (:).

Lorsque vous définissez une fonction en utilisant un deux-points, Lua ajoute automatiquement self comme premier paramètre :

local player = {
    name = "Hero"
}

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

Le deux-points fonctionne également lors de l'appel de la fonction. Il passe automatiquement la table comme premier argument :

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

Ceci est équivalent à écrire player.greet(player), mais en beaucoup plus propre. Le deux-points gère le paramètre self des deux côté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 avec point (self explicite)
function counter.increment(self)
    self.value = self.value + 1
end
counter.increment(counter)

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

La syntaxe avec deux-points est la façon 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 field message initialisé à une valeur que vous recevrez en input.

Ajoutez une method :sayHello(name) using la colon syntax qui print le greeting sous ce format :

[message], [name]!

Vous recevrez deux entrées :

  1. Le message de félicitation à stocker dans greeter.message
  2. Un nom à passer à la method :sayHello()

Définissez la method using la colon syntax et appelez-la using la colon syntax. Print le greeting formaté.

Par exemple, si le message est Welcome et le nom est Luna, l'Output 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 deux-points
-- 3. Appelez la méthode en utilisant la syntaxe 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