Menu
Coddy logo textTech

Tables avec fonctions

Fait partie de la section Object Oriented Programming du Journey Lua de Coddy — leçon 1 sur 70.

En Lua, les tables sont incroyablement polyvalentes. Au-delà du stockage de données, elles peuvent également contenir des fonctions. Cela vous permet de regrouper des opérations liées, gardant votre code organisé et facile à gérer.

Pour placer une fonction à l'intérieur d'une table, il vous suffit de l'assigner à une clé comme n'importe quelle autre valeur :

local myTable = {
    greet = function(name)
        return "Hello, " .. name
    end
}

print(myTable.greet("Alice"))  -- Résultat : Hello, Alice

Vous pouvez également définir la fonction séparément, puis l'ajouter à la table :

local myTable = {}

myTable.greet = function(name)
    return "Hello, " .. name
end

Ou utilisez cette syntaxe raccourcie plus concise :

local myTable = {}

function myTable.greet(name)
    return "Hello, " .. name
end

Les trois approches produisent le même résultat. Vous appelez la fonction en utilisant la notation par point : myTable.greet("Alice"). Ce modèle de regroupement de fonctions avec des données est le fondement de la programmation orientée objet en Lua.

challenge icon

Défi

Facile

Créez une table nommée calculator qui contient quatre fonctions arithmétiques :

  • add(a, b) - retourne la somme de a et b
  • subtract(a, b) - retourne a moins b
  • multiply(a, b) - retourne le produit de a et b
  • divide(a, b) - retourne a divisé par b

Vous recevrez trois entrées :

  1. Un nom d'opération (l'un des suivants : add, subtract, multiply, divide)
  2. Le premier nombre
  3. Le second nombre

Appelez la fonction appropriée de votre table calculator en fonction du nom de l'opération et affichez le résultat.

Aide-mémoire

En Lua, les tables peuvent stocker des fonctions aux côtés de données. Pour ajouter une fonction à une table, affectez-la à une clé :

local myTable = {
    greet = function(name)
        return "Hello, " .. name
    end
}

print(myTable.greet("Alice"))  -- Résultat : Hello, Alice

Vous pouvez également définir des fonctions séparément et les ajouter à la table :

local myTable = {}

myTable.greet = function(name)
    return "Hello, " .. name
end

Ou utilisez la syntaxe abrégée :

local myTable = {}

function myTable.greet(name)
    return "Hello, " .. name
end

Appelez les fonctions de table en utilisant la notation par point : myTable.greet("Alice")

Essayez vous-même

-- Lire les entrées
local operation = io.read()
local num1 = tonumber(io.read())
local num2 = tonumber(io.read())

-- À FAIRE : Créer une table calculator avec quatre fonctions :
-- add(a, b), subtract(a, b), multiply(a, b), divide(a, b)


-- À FAIRE : Appeler la fonction appropriée de la table calculator en utilisant le nom de l'opération
-- et afficher le résultat
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 Object Oriented Programming