Rückblick – Zahlengenerator
Teil des Abschnitts Logik & Programmablauf der Lua-Journey von Coddy. Lektion 53 von 54.
Aufgabe
EinfachSchreibe eine Funktion createNumberGenerator, die count entgegennimmt und eine Zeichenkette zurückgibt, die alle von einer Coroutine generierten Zahlen anzeigt.
Erstelle eine Coroutine, die sequenziell mit 1 beginnend Zahlen generiert. Jedes Mal, wenn die Coroutine fortgesetzt wird, soll sie die nächste Zahl der Sequenz liefern. Setze die Coroutine count-mal fort, um alle generierten Zahlen zu sammeln, und gib sie anschließend als eine einzelne Zeichenkette zurück, wobei jede Zahl in einer neuen Zeile steht.
Logik:
- Erstelle eine Funktion, die eine Schleife verwendet, um die Zahlen 1, 2, 3 usw. zu liefern.
- Verpacke diese Funktion mithilfe von
coroutine.create()in eine Coroutine. - Setze die Coroutine
count-mal fort und sammle jede gelieferte Zahl. - Füge alle Zahlen mit Zeilenumbruchzeichen dazwischen zusammen.
- Gib die zusammengefügte Zeichenkette zurück.
Parameter:
count(number): Die Anzahl der Werte, die aus der Sequenz generiert werden sollen
Rückgabe: Eine Zeichenkette, die alle generierten Zahlen enthält und durch Zeilenumbrüche getrennt ist (string). Format: 1\n2\n3
Probier es selbst
function createNumberGenerator(count)
-- Schreibe hier den Code
end
Alle Lektionen in Logik & Programmablauf
1Fortgeschrittene Tabelleniteration
Iterieren mit pairs()Iterieren mit ipairs()pairs() vs. ipairs()Zusammenfassung – Charakterbogen2Weitere Funktionen der Tabellenbibliothek
table.concat()Tabellenkonstruktion & unpack()table.sort()Eigene Sortierung mit FunktionenRückblick – Highscore-Tabelle3Fortgeschrittene Funktionskonzepte
Mehrere Werte zurückgebenVariadische Funktionen (...)Funktionen als Werte erster KlasseAnonyme FunktionenWas ist eine Closure?Rückblick – Einfacher Event-Handler6Fehlerbehandlung
Die error()-FunktionGeschützte Aufrufe mit pcall()Zusammenfassung – Sichere Division9Coroutines für Einsteiger
Was ist eine Coroutine?Coroutine erstellen & fortsetzenPausieren mit coroutine.yield()Fortsetzen & yieldCoroutine-Status prüfenRückblick – ZahlengeneratorRückblick – VektorrechnungÜbe selbstständig: Online-Lua-Compiler