Das Protokoll für generische for-Schleifen
Verstehen Sie das Iteratorprotokoll mit drei Werten: Iteratorfunktion, Zustand und Steuervariable
Das Protokoll für generische for-Schleifen ist eine kostenlose Lua Academy-Lektion auf CoddyKit. Dies ist Lektion 1 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Lua Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Lua Academy-Kurs umfasst insgesamt 4 Lektionen.
Funktionsweise von Generic for
Die for-Anweisung ruft bei jeder Iteration eine Iteratorfunktion auf. Sie übergibt einen Zustand und eine Steuervariable und endet, wenn die Funktion nil zurückgibt.
Rückgabe von drei Werten
for var in iter, state, init do – Lua entpackt dies als Iteratorfunktion iter, unveränderlichen Zustand state und initiale Steuervariable init.
ipairs-Protokoll
ipairs(t) gibt eine zustandslose Iteratorfunktion, die Tabelle als Zustand und 0 als initiale Steuervariable zurück. Jeder Aufruf gibt den nächsten Index und Wert zurück.
for i, v in ipairs({10, 20, 30}) do
print(i, v)
endBenutzerdefinierter Iterator mit drei Werten
Implementieren Sie einen benutzerdefinierten zustandslosen Iterator, indem Sie alle drei Werte explizit bereitstellen.
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)
endVereinfachung mit einer Closure
Ein Closure-basierter Iterator muss nur die Iteratorfunktion zurückgeben (eine Zustands- oder Steuervariable ist nicht erforderlich, da beide in Upvalues gespeichert sind).
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) endnil beendet die Schleife
Die Generic-for-Schleife endet, sobald die Iteratorfunktion nil als ersten Rückgabewert liefert. Das ist die Beendigungsvereinbarung.
Mehrere Rückgabewerte
Der Iterator kann mehrere Werte zurückgeben; jeder wird einer Schleifenvariablen zugeordnet: for k, v in pairs(t).
for k, v in pairs({x=1, y=2}) do
print(k, v)
endVerwendung des Zustandsparameters
Der Zustandsparameter wird unverändert an jeden Iteratoraufruf übergeben. Bei zustandslosen Iteratoren enthält er den gesamten erforderlichen Kontext (z. B. die Tabelle selbst).
Coroutine.wrap als Iterator
coroutine.wrap(fn) gibt eine Funktion zurück, die bei jedem Aufruf die Coroutine fortsetzt. Die erzeugten Werte werden zu Rückgabewerten – ideal als Iterator für Generic for.
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) endIteratorzusammensetzung
Iteratoren können zusammengesetzt werden: Verpacken Sie einen Iterator in einen anderen, um Filterung oder Transformation hinzuzufügen.
local function mapped(iter, fn)
return function()
local v = iter()
if v ~= nil then return fn(v) end
end
endUnendliche Iteratoren
Ein Iterator, der nie nil zurückgibt, erzeugt eine Endlosschleife. Stellen Sie immer eine Abbruchbedingung oder break bereit.
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)
endFrage zu Generic for
Wann endet die Generic-for-Schleife?
Zusammenfassung: Generic-for-Protokoll
Generic for ruft eine Iteratorfunktion mit unveränderlichem Zustand und einer Steuervariable auf. Die Schleife endet bei nil. Closures vereinfachen zustandsbehaftete Iteratoren, indem sie den Zustand in Upvalues speichern.
Häufig gestellte Fragen
Ist die Lektion „Das Protokoll für generische for-Schleifen“ kostenlos?
Ja — der vollständige Text von „Das Protokoll für generische for-Schleifen“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Lua Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Lua Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Das Protokoll für generische for-Schleifen“?
Verstehen Sie das Iteratorprotokoll mit drei Werten: Iteratorfunktion, Zustand und Steuervariable Du übst Lua Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um Lua Academy zu starten?
Keine Vorkenntnisse erforderlich. Lua Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 1 von 4.
Wie lange dauert die Lektion „Das Protokoll für generische for-Schleifen“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser Lua Academy-Lektion Code schreiben und ausführen?
Ja. Jede Lua Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Das Protokoll für generische for-Schleifen
- Zustandslose Iteratoren
- Zustandsbehaftete Iteratoren mit Closures
- Generatoren auf Coroutine-Basis