Instructions if, elseif et else
Écrivez une logique de branchement conditionnel avec la syntaxe if/elseif/else de Lua.
Instructions if, elseif et else est une leçon Lua Academy gratuite sur CoddyKit. Ceci est la leçon 1 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Lua Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Lua Academy comprend 4 leçons au total.
Instruction if de base
L’instruction if évalue une condition et exécute son bloc lorsque la condition est considérée comme vraie. En Lua, seuls false et nil sont considérés comme faux ; tout le reste — y compris 0 et "" — est considéré comme vrai. Terminez le bloc avec end.
local score = 85
if score >= 90 then
print("A grade")
end
if score >= 60 then
print("Passing") -- prints
end
if 0 then
print("0 is truthy!") -- prints in Lua
endif/elseif/else
Enchaînez plusieurs conditions avec elseif et prévoyez une solution de repli avec else. Lua évalue les conditions de haut en bas et exécute uniquement la première branche correspondante. Contrairement à switch/case dans d’autres langages, elseif est un mot-clé unique en Lua, et non else if.
local score = 75
if score >= 90 then
print("A")
elseif score >= 80 then
print("B")
elseif score >= 70 then
print("C") -- prints
elseif score >= 60 then
print("D")
else
print("F")
endOpérateurs logiques dans les conditions
Lua utilise and, or et not comme opérateurs logiques. Ils sont à évaluation abrégée : and renvoie la première valeur considérée comme fausse ou la dernière valeur ; or renvoie la première valeur considérée comme vraie ou la dernière valeur. Cela permet d’utiliser des constructions idiomatiques avec des valeurs par défaut.
local age = 25
local hasID = true
if age >= 18 and hasID then
print("Entry allowed")
end
-- or for defaults
local name = nil
local display = name or "Guest"
print(display) -- GuestIdïome ternaire avec and/or
Lua ne possède pas d’opérateur ternaire, mais la construction and/or en fournit une approximation : condition and trueVal or falseVal. Elle fonctionne tant que trueVal n’est ni false ni nil. Pour une logique ternaire plus sûre, utilisez une fonction if sur une seule ligne.
local x = 10
local label = (x > 5) and "big" or "small"
print(label) -- big
-- Safe ternary function
local function ternary(cond, t, f)
if cond then return t else return f end
end
print(ternary(false, "yes", "no")) -- noInstructions if imbriquées
Vous pouvez imbriquer des instructions if dans d’autres branches. Chaque bloc imbriqué nécessite son propre end. Un imbrication profonde indique souvent qu’il serait possible d’utiliser des retours anticipés ou des clauses de garde pour aplatir la logique.
local loggedIn = true
local isAdmin = false
if loggedIn then
if isAdmin then
print("Admin dashboard")
else
print("User dashboard") -- prints
end
else
print("Login required")
endClauses de garde
Une clause de garde est un retour anticipé qui gère les cas invalides ou particuliers au début d’une fonction, afin de réduire l’imbrication. Cette approche laisse le code du « chemin nominal » sans indentation et le rend plus facile à lire.
local function processAge(age)
if type(age) ~= "number" then
return nil, "age must be a number"
end
if age < 0 then
return nil, "age cannot be negative"
end
-- happy path
return math.floor(age)
end
print(processAge(25.7)) -- 25
print(processAge(-1)) -- nil age cannot be negativeComparer des valeurs
Opérateurs de comparaison de Lua : == (égal), ~= (différent), <, >, <=, >=. Remarque : ~= signifie « différent » en Lua, et non !=. Les comparaisons de chaînes utilisent l’ordre lexicographique. Vous ne pouvez pas comparer directement des chaînes et des nombres.
print(1 == 1) -- true
print(1 ~= 2) -- true
print("abc" < "abd") -- true (lexicographic)
print("10" == 10) -- false (different types)
-- Safe nil check
local val = nil
if val == nil then
print("no value")
endÉgalité des chaînes
Deux chaînes sont égales en Lua si et seulement si elles ont le même contenu en octets et la même longueur. Lua intern les chaînes ; les chaînes égales pointent donc souvent vers la même zone mémoire, ce qui permet à == d’effectuer rapidement une comparaison de pointeurs. Ne comparez jamais les chaînes avec is ou avec une égalité de référence : == compare toujours les valeurs.
local s1 = "hello"
local s2 = "hel" .. "lo"
print(s1 == s2) -- true (same content)
print(s1 == "Hello") -- false (case sensitive)
-- Check for empty string
local name = ""
if name == "" or name == nil then
print("name is empty or nil")
endComparaison des tables et des fonctions
Les tables et les fonctions sont comparées par référence, et non selon leur contenu. Deux littéraux de table différents ayant un contenu identique ne sont pas égaux, sauf s’ils désignent le même objet. Utilisez des méthodes de métatable telles que __eq pour définir une égalité personnalisée pour les tables.
local t1 = {1, 2, 3}
local t2 = {1, 2, 3}
local t3 = t1
print(t1 == t2) -- false (different objects)
print(t1 == t3) -- true (same reference)
local f1 = function() end
local f2 = function() end
print(f1 == f2) -- falseConstructions idiomatiques
Constructions Lua courantes avec les conditionnelles : utilisez assert() pour valider les préconditions, utilisez l’astuce and/or pour des valeurs par défaut courtes et évitez les doubles négations (not not x) pour convertir une valeur quelconque en booléen.
-- assert pattern
local function sqrt(n)
assert(n >= 0, "sqrt of negative")
return math.sqrt(n)
end
-- Convert to boolean
local val = 42
local boolVal = not not val
print(boolVal) -- true
-- Default parameter
local function greet(name)
name = name or "World"
print("Hello, " .. name)
end
greet() -- Hello, WorldVérification rapide
Quelles valeurs sont considérées comme fausses en Lua ?
Récapitulatif : conditionnelles
Résumé :
if ... elseif ... else ... end— la forme complète du branchement- Seuls
niletfalsesont considérés comme faux and/orutilisent l’évaluation abrégée et renvoient les valeurs des opérandes~=signifie « différent » en Lua (et non !=)- Les tables et les fonctions sont comparées par référence, les chaînes par valeur
- Utilisez des clauses de garde pour réduire l’imbrication
Questions Fréquemment Posées
La leçon « Instructions if, elseif et else » est-elle gratuite ?
Oui — le texte complet de « Instructions if, elseif et else » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Lua Academy, passe à CoddyKit PRO. Le cours Lua Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Instructions if, elseif et else » ?
Écrivez une logique de branchement conditionnel avec la syntaxe if/elseif/else de Lua. Tu pratiques Lua Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer Lua Academy ?
Aucune expérience préalable n'est requise. Lua Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 1 sur 4.
Combien de temps prend la leçon « Instructions if, elseif et else » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon Lua Academy ?
Oui. Chaque leçon Lua Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Instructions if, elseif et else
- Boucles while et repeat-until
- Boucle for numérique
- for générique et break