0Pricing
Lua Academy · Leçon

Le protocole for générique

Comprenez le protocole d’itération à trois valeurs : fonction d’itération, état et variable de contrôle.

Le protocole for générique 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.

Fonctionnement du for générique

L’instruction for appelle une fonction d’itération à chaque itération. Elle lui transmet un état et une variable de contrôle, puis s’arrête lorsque la fonction renvoie nil.

Retour de trois valeurs

for var in iter, state, init do — Lua décompose cela ainsi : fonction d’itération iter, état invariant state, variable de contrôle initiale init.

Protocole ipairs

ipairs(t) renvoie une fonction d’itération sans état, la table comme état et 0 comme variable de contrôle initiale. Chaque appel renvoie l’index et la valeur suivants.

for i, v in ipairs({10, 20, 30}) do
  print(i, v)
end

Itérateur personnalisé à trois valeurs

Implémentez un itérateur personnalisé sans état en fournissant explicitement les trois valeurs.

local function iter(t, i)
  i = i + 1
  local v = t[i]
  if v then return i, v end
end
for i, v in iter, {"a","b","c"}, 0 do
  print(i, v)
end

Simplification avec une fermeture

Un itérateur fondé sur une fermeture n’a besoin de renvoyer que la fonction d’itération (aucun état ni variable de contrôle n’est nécessaire : ils vivent dans les variables capturées).

local function values(t)
  local i = 0
  return function()
    i = i + 1
    return t[i]
  end
end
for v in values({1,2,3}) do print(v) end

nil termine la boucle

La boucle for générique se termine dès que la fonction d’itération renvoie nil comme première valeur de retour. C’est le contrat de terminaison.

Plusieurs valeurs de retour

L’itérateur peut renvoyer plusieurs valeurs ; chacune correspond à une variable de boucle : for k, v in pairs(t).

for k, v in pairs({x=1, y=2}) do
  print(k, v)
end

Utilisation du paramètre d’état

Le paramètre d’état est transmis sans modification à chaque appel de l’itérateur. Pour les itérateurs sans état, il contient tout le contexte nécessaire (par exemple, la table elle-même).

Coroutine.wrap comme itérateur

coroutine.wrap(fn) renvoie une fonction qui reprend la coroutine à chaque appel ; les valeurs produites deviennent des valeurs de retour — c’est idéal comme itérateur de for générique.

local function countdown(n)
  return coroutine.wrap(function()
    for i = n, 1, -1 do coroutine.yield(i) end
  end)
end
for v in countdown(5) do print(v) end

Composition d’itérateurs

Les itérateurs peuvent être composés : enveloppez un itérateur dans un autre pour ajouter un filtrage ou une transformation.

local function mapped(iter, fn)
  return function()
    local v = iter()
    if v ~= nil then return fn(v) end
  end
end

Itérateurs infinis

Un itérateur qui ne renvoie jamais nil crée une boucle infinie. Prévoyez toujours une condition de terminaison ou utilisez break.

local function naturals()
  local n = 0
  return function() n = n+1; return n end
end
for v in naturals() do
  if v > 5 then break end
  print(v)
end

Question sur le for générique

Quand la boucle for générique s’arrête-t-elle ?

Récapitulatif : protocole du for générique

Le for générique appelle une fonction d’itération avec un état invariant et une variable de contrôle. Il s’arrête sur nil. Les fermetures simplifient les itérateurs avec état en encodant l’état dans des variables capturées.

Questions Fréquemment Posées

La leçon « Le protocole for générique » est-elle gratuite ?

Oui — le texte complet de « Le protocole for générique » 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 « Le protocole for générique » ?

Comprenez le protocole d’itération à trois valeurs : fonction d’itération, état et variable de contrôle. 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 « Le protocole for générique » ?

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. Le protocole for générique
  2. Itérateurs sans état
  3. Itérateurs avec état et fermetures
  4. Générateurs fondés sur les coroutines
← Retour à Lua Academy