0Pricing
Lua Academy · Leçon

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
end

if/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")
end

Opé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)   -- Guest

Idï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"))  -- no

Instructions 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")
end

Clauses 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 negative

Comparer 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")
end

Comparaison 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)   -- false

Constructions 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, World

Vé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 nil et false sont considérés comme faux
  • and/or utilisent 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

  1. Instructions if, elseif et else
  2. Boucles while et repeat-until
  3. Boucle for numérique
  4. for générique et break
← Retour à Lua Academy