Menu
Coddy logo textTech

Coroutine erstellen & fortsetzen

Teil des Abschnitts Logik & Programmablauf der Lua-Journey von Coddy. Lektion 49 von 54.

Nachdem du nun verstanden hast, was coroutines sind, lernen wir, wie man sie in Lua tatsächlich erstellt und ausführt.

Um eine Coroutine zu erstellen, verwendest du die Funktion coroutine.create(). Diese Funktion nimmt eine reguläre Funktion als Argument und verpackt sie in ein Coroutine-Objekt. Hier ist die grundlegende Syntax:

function myTask()
    print("Hello from coroutine!")
end

local co = coroutine.create(myTask)

Zu diesem Zeitpunkt existiert die Coroutine, aber sie wurde noch nicht gestartet. Die Funktion myTask wurde noch nicht aufgerufen. Um die Ausführung einer Coroutine tatsächlich zu starten oder fortzusetzen, verwendest du coroutine.resume():

coroutine.resume(co)

Wenn du resume() zum ersten Mal für eine Coroutine aufrufst, beginnt sie mit der Ausführung am Anfang ihrer Funktion. Wenn die Coroutine ohne Pause vollständig durchläuft, wird sie abgeschlossen und kann nicht erneut fortgesetzt werden.

Hier ist ein vollständiges Beispiel:

function greet()
    print("Starting...")
    print("Finishing!")
end

local co = coroutine.create(greet)
coroutine.resume(co)  -- Gibt beide Nachrichten aus

Die Coroutine läuft in einem Durchgang vom Anfang bis zum Ende. In der nächsten Lektion lernst du, wie du Coroutinen mitten in der Ausführung pausieren lässt.

challenge icon

Aufgabe

Einfach

Schreibe eine Funktion runSimpleCoroutine, die eine message entgegennimmt und die Ausgabe einer Coroutine zurückgibt, die diese Nachricht ausgibt.

Erstelle mit coroutine.create() eine Coroutine, die eine Funktion umschließt, welche die bereitgestellte Nachricht ausgibt. Verwende anschließend coroutine.resume(), um die Coroutine auszuführen. Die Funktion sollte die ausgegebene Nachricht zurückgeben.

Logik:

  • Definiere eine Funktion, die den Nachrichtenparameter ausgibt
  • Erstelle aus dieser Funktion mithilfe von coroutine.create() eine Coroutine
  • Setze die Coroutine mithilfe von coroutine.resume() fort
  • Gib die ausgegebene Nachricht zurück

Parameter:

  • message (string): Die von der Coroutine auszugebende Nachricht

Rückgabewert: Die von der Coroutine ausgegebene Nachricht (string)

Probier es selbst

function runSimpleCoroutine(message)
    -- Schreibe hier den Code
end
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Logik & Programmablauf

Übe selbstständig: Online-Lua-Compiler