Apprenez Lua en 10 minutes
Je suis Lua - un langage de programmation super léger, parfait pour être intégré dans d’autres applications. Saviez-vous que je suis utilisé dans des jeux comme ‘World of Warcraft’ et Roblox ? Je suis aussi populaire pour les scripts de configuration !
1. Votre premier programme en Lua
Commençons par les bases. Créez un fichier hello.lua
et écrivez :
print("Hello, World!")
Enregistrez et exécutez dans le terminal :
lua hello.lua
Vous verrez :
Hello, World!
Voyez comme c’est facile ! print()
affiche du texte à l’écran.
2. Syntaxe de base
Ma syntaxe est super simple :
-- Ceci est un commentaire d'une ligne
print("Bonjour le monde !")
--[[
Ceci est un commentaire
sur plusieurs lignes
]]
Points importants :
- Commentaires : Une ligne
--
, multiples--[[ ]]
- Instructions : Une par ligne, sans point-virgule
- Casse : Je distingue les majuscules des minuscules
- Espaces : Espaces et sauts de ligne n’importent pas
3. Variables et types de données
Je suis à typage dynamique, pas besoin de déclarer les types :
-- Affectation directe
nom = "Lua"
age = 25
incroyable = true
pi = 3.14159
-- Affectation multiple
x, y, z = 10, 20, 30
-- Valeur nulle est nil
vide = nil
print("Nom:", nom)
print("Âge:", age)
print("Incroyable?:", incroyable)
Mes types de données :
- nil : Aucune valeur
- boolean : true ou false
- number : Nombres (entiers et décimaux)
- string : Texte
- table : Ma structure de données universelle
- function : Fonctions (citoyens de première classe)
- userdata : Pour C
- thread : Coroutines
4. Manipulation de chaînes
-- Créer des chaînes
str1 = "Bonjour"
str2 = 'Monde'
str3 = [[Multiligne
texte facile]]
-- Concaténer avec ..
message = str1 .. " " .. str2
print(message) -- Sortie: Bonjour Monde
-- Longueur avec #
longueur = #"Bonjour"
print(longueur) -- Sortie: 7
-- Méthodes de chaîne
texte = "hello world"
majuscules = texte:upper()
minuscules = texte:lower()
sousChaine = texte:sub(1, 5)
print(majuscules) -- Sortie: HELLO WORLD
print(sousChaine) -- Sortie: hello
5. Tables - Mon conteneur universel
Les tables sont ma meilleure fonctionnalité :
-- Comme un tableau (index à partir de 1)
fruits = {"pomme", "banane", "cerise"}
print(fruits[1]) -- Sortie: pomme
print(fruits[2]) -- Sortie: banane
-- Comme un dictionnaire
personne = {
nom = "Jean",
age = 30,
ville = "Paris"
}
print(personne.nom) -- Sortie: Jean
print(personne["age"]) -- Sortie: 30
-- Mixte fonctionne aussi
tableMixte = {
"pomme",
"banane",
couleur = "rouge",
quantite = 5
}
-- Opérations sur les tables
fruits = {"pomme", "banane"}
table.insert(fruits, "cerise") -- Ajouter à la fin
table.insert(fruits, 2, "orange") -- Insérer à la position
print(table.concat(fruits, ", ")) -- Sortie: pomme, orange, banane, cerise
6. Structures de contrôle
-- If
age = 18
if age >= 18 then
print("Vous êtes adulte")
elseif age >= 13 then
print("Vous êtes adolescent")
else
print("Vous êtes enfant")
end
-- While
compteur = 1
while compteur <= 5 do
print("Compteur:", compteur)
compteur = compteur + 1
end
-- For numérique
for i = 1, 5 do
print("Nombre:", i)
end
-- For avec pas
for i = 10, 1, -2 do
print("Compte à rebours:", i)
end
-- For pour les tables
fruits = {"pomme", "banane", "cerise"}
for index, fruit in ipairs(fruits) do
print(index, fruit)
end
personne = {nom = "Jean", age = 30}
for cle, valeur in pairs(personne) do
print(cle, valeur)
end
7. Fonctions
-- Fonction de base
function saluer(nom)
return "Bonjour, " .. nom .. "!"
end
message = saluer("Marie")
print(message) -- Sortie: Bonjour, Marie!
-- Retours multiples
function calculer(a, b)
return a + b, a - b, a * b, a / b
end
somme, difference, produit, quotient = calculer(10, 5)
print("Somme:", somme) -- Sortie: Somme: 15
print("Différence:", difference) -- Sortie: Différence: 5
-- Fonction anonyme (lambda)
multiplier = function(x, y)
return x * y
end
resultat = multiplier(4, 5)
print(resultat) -- Sortie: 20
-- Fonctions comme paramètres
function executerOperation(x, y, operation)
return operation(x, y)
end
resultat = executerOperation(6, 7, multiplier)
print(resultat) -- Sortie: 42
8. Modules
Organisez le code en modules. Créez mathematiques.lua
:
-- mathematiques.lua
local Mathematiques = {}
function Mathematiques.additionner(a, b)
return a + b
end
function Mathematiques.multiplier(a, b)
return a * b
end
return Mathematiques
Utilisez dans le fichier principal :
-- principal.lua
local mathematiques = require("mathematiques")
resultat = mathematiques.additionner(10, 5)
print("Résultat addition:", resultat) -- Sortie: Résultat addition: 15
resultat = mathematiques.multiplier(4, 6)
print("Résultat multiplication:", resultat) -- Sortie: Résultat multiplication: 24
9. Gestion des erreurs
-- Capturer les erreurs avec pcall
function operationDangereuse()
error("Quelque chose s'est mal passé !")
end
-- pcall appelle de manière protégée
succes, resultat = pcall(operationDangereuse)
if succes then
print("Succès:", resultat)
else
print("Échec:", resultat)
end
-- Erreurs personnalisées
function diviser(a, b)
if b == 0 then
error("Division par zéro non autorisée")
end
return a / b
end
succes, resultat = pcall(diviser, 10, 0)
if not succes then
print("Erreur:", resultat)
end
10. Exemples pratiques
-- Calculatrice simple
function calculatrice()
print("🐮 Calculatrice Simple")
print("1. Addition")
print("2. Soustraction")
print("3. Multiplication")
print("4. Division")
choix = tonumber(io.read())
print("Premier nombre:")
num1 = tonumber(io.read())
print("Deuxième nombre:")
num2 = tonumber(io.read())
if choix == 1 then
resultat = num1 + num2
print("Résultat:", resultat)
elseif choix == 2 then
resultat = num1 - num2
print("Résultat:", resultat)
elseif choix == 3 then
resultat = num1 * num2
print("Résultat:", resultat)
elseif choix == 4 then
if num2 ~= 0 then
resultat = num1 / num2
print("Résultat:", resultat)
else
print("❌ Division par zéro")
end
else
print("🤔 Choix invalide")
end
end
-- Pour utiliser, décommentez
-- calculatrice()
-- Opérations sur les fichiers
function lireFichier(nomFichier)
local fichier = io.open(nomFichier, "r")
if not fichier then
return nil, "Impossible d'ouvrir le fichier"
end
local contenu = fichier:read("*a")
fichier:close()
return contenu
end
contenu, erreur = lireFichier("exemple.txt")
if contenu then
print("Contenu:", contenu)
else
print("Erreur:", erreur)
end
Conclusion
Je Lua suis incroyable ! Parfait pour :
- 🎮 Scripting de jeux (beaucoup de jeux m’utilisent)
- 🔧 Développement embarqué (à cause de ma légèreté)
- ⚙️ Fichiers de configuration et automatisation
- 🚀 Scénarios haute performance (avec LuaJIT)
Le meilleur de moi :
- Super léger : Prend peu d’espace
- Rapide : LuaJIT est ultra rapide
- Flexible : Typage dynamique + tables universelles
- Portable : Fonctionne sur mobiles et serveurs
- Facile à intégrer : Je m’entends bien avec C/C++
Vous voulez en savoir plus ? Essayez :
- Bibliothèque standard de Lua
- Coroutines (programmation concurrente)
- Métatables et métaméthodes (pour OOP)
- API C de Lua
- Love2D pour le développement de jeux
Je Lua suis facile à apprendre et très puissant ! 🚀