Lua - Tables: Your Gateway to Powerful Data Structures

Introduction

Bonjour là-bas, aspirants programmeurs ! Aujourd'hui, nous allons entreprendre un voyage passionnant à travers le monde des tables Lua. En tant qu'enseignant en informatique bienveillant, je suis ravi de vous guider à travers ce concept fondamental qui forme le squelette de la programmation Lua.

Lua - Tables

Les tables en Lua sont comme des couteaux suisses - elles sont polyvalentes, puissantes, et une fois que vous savez les utiliser, vous vous demanderez comment vous avez pu coder sans elles ! Mettons-nous à l'eau et dévoilons ensemble les mystères des tables Lua.

Representation and Usage

What Are Tables?

En Lua, les tables sont la structure de données principale (et unique !). Elles sont incroyablement flexibles et peuvent être utilisées pour représenter des tableaux, des listes, des dictionnaires, des ensembles, et même des objets. Pensez-les comme des contenants magiques qui peuvent contenir à peu près n'importe quoi !

Commençons par un exemple simple :

local myFirstTable = {1, 2, 3, 4, 5}
print(myFirstTable[1])  -- Output: 1

Dans cet exemple, nous avons créé une table qui ressemble à un tableau. Mais voici un fait étrange de Lua : contrairement à la plupart des langages de programmation, les tables Lua commencent à l'index 1, pas 0 !

Les tables peuvent aussi agir comme des dictionnaires, en stockant des paires clé-valeur :

local person = {
name = "Alice",
age = 30,
city = "Wonderland"
}
print(person.name)  -- Output: Alice
print(person["age"])  -- Output: 30

Voyez comment nous pouvons accéder aux valeurs en utilisant soit la notation pointée, soit les crochets ? C'est comme avoir deux cuillères pour manger votre soupe - utilisez celle qui vous semble plus confortable !

Table Manipulation

Adding and Modifying Elements

Les tables en Lua sont muables, ce qui signifie que nous pouvons les modifier après leur création. Voici comment :

local fruits = {"apple", "banana"}
fruits[3] = "cherry"  -- Ajoute un nouvel élément
fruits.orange = "citrus"  -- Ajoute une paire clé-valeur
fruits.apple = "red fruit"  -- Modifie une valeur existante

print(fruits[3])  -- Output: cherry
print(fruits.orange)  -- Output: citrus
print(fruits.apple)  -- Output: red fruit

N'est-ce pas incroyable à quel point les tables sont flexibles ? Elles grandissent et changent comme un véritable panier de fruits !

Checking Table Length

Pour savoir combien d'éléments contient une table, nous utilisons l'opérateur de longueur (#) :

local numbers = {10, 20, 30, 40, 50}
print(#numbers)  -- Output: 5

Mais attention ! Cela ne fonctionne de manière fiable que pour les séquences (tables avec des clés numériques consécutives commençant à 1).

Table Concatenation

Lua fournit un opérateur pratique pour concaténer des tables : table.concat(). C'est comme de la colle magique pour les éléments de votre table !

local words = {"Hello", "world", "from", "Lua"}
local sentence = table.concat(words, " ")
print(sentence)  -- Output: Hello world from Lua

Ici, nous avons joints tous les éléments de words avec un espace entre eux. Vous pouvez utiliser n'importe quel séparateur que vous souhaitez !

Insert and Remove

Inserting Elements

Pour ajouter des éléments à une table, nous pouvons utiliser table.insert() :

local shopping_list = {"milk", "bread"}
table.insert(shopping_list, "eggs")
table.insert(shopping_list, 2, "cheese")

for i, item in ipairs(shopping_list) do
print(i, item)
end
-- Output:
-- 1 milk
-- 2 cheese
-- 3 bread
-- 4 eggs

Notez comment nous avons ajouté "eggs" à la fin et "cheese" à l'index 2 ? C'est comme glisser des articles dans votre chariot d'achats !

Removing Elements

Pour supprimer des éléments, nous utilisons table.remove() :

local stack = {"plate", "bowl", "cup", "spoon"}
local removed = table.remove(stack)
print(removed)  -- Output: spoon

removed = table.remove(stack, 1)
print(removed)  -- Output: plate

for i, item in ipairs(stack) do
print(i, item)
end
-- Output:
-- 1 bowl
-- 2 cup

C'est comme un jeu de Jenga - retirer des pièces sans faire tomber toute la structure !

Sorting Tables

Lua fournit une fonction intégrée pour trier les tables : table.sort(). Par défaut, il trie par ordre croissant :

local fruits = {"banana", "apple", "cherry", "date"}
table.sort(fruits)

for i, fruit in ipairs(fruits) do
print(i, fruit)
end
-- Output:
-- 1 apple
-- 2 banana
-- 3 cherry
-- 4 date

Vous pouvez également fournir une fonction de tri personnalisée :

local numbers = {3, 1, 4, 1, 5, 9, 2, 6}
table.sort(numbers, function(a, b) return a > b end)

for i, num in ipairs(numbers) do
print(i, num)
end
-- Output:
-- 1 9
-- 2 6
-- 3 5
-- 4 4
-- 5 3
-- 6 2
-- 7 1
-- 8 1

C'est comme avoir un assistant personnel pour organiser vos données comme vous le souhaitez !

Conclusion

Et voilà, les amis ! Nous avons fait le voyage à travers le pays des tables Lua, de la création à la manipulation, de la concaténation au tri. Les tables sont le pain et le beurre de la programmation Lua, et j'espère que ce tutoriel vous a donné un goût de leur puissance et flexibilité.

Souvenez-vous, la pratique rend parfait. Alors, créez des tables, jouez avec elles, et avant de vous en rendre compte, vous serez un expert en retournement de tables ! Bonne programmation, et puissent vos tables toujours être bien structurées et exemptes de bugs !

Credits: Image by storyset