Menu
Coddy logo textTech

coroutine create & resume

Teil des Abschnitts Logic & Flow der Lua-Journey von Coddy — Lektion 49 von 54.

Nachdem Sie nun verstanden haben, was Coroutinen sind, lernen wir nun, wie man sie in Lua tatsächlich erstellt und ausführt.

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

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

local co = coroutine.create(myTask)

An diesem Punkt existiert die Coroutine, hat aber noch nicht mit der Ausführung begonnen. Die Funktion myTask wurde noch nicht aufgerufen. Um die Ausführung einer Coroutine tatsächlich zu starten oder fortzusetzen, verwenden Sie coroutine.resume():

coroutine.resume(co)

Wenn Sie resume() zum ersten Mal für eine Coroutine aufrufen, beginnt sie mit der Ausführung am Anfang ihrer Funktion. Wenn die Coroutine ohne Unterbrechung bis zum Ende durchläuft, ist 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 von Anfang bis Ende durch. In der nächsten Lektion lernst du, wie du Coroutinen mitten in der Ausführung pausieren lassen kannst.

challenge icon

Aufgabe

Einfach

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

Erstellen Sie eine Coroutine mit coroutine.create(), die eine Funktion umschließt, welche die bereitgestellte Nachricht ausgibt. Verwenden Sie dann coroutine.resume(), um die Coroutine auszuführen. Die Funktion sollte die Nachricht zurückgeben, die ausgegeben wurde.

Logik:

  • Definieren Sie eine Funktion, die den Parameter message ausgibt
  • Erstellen Sie eine Coroutine aus dieser Funktion mit coroutine.create()
  • Setzen Sie die Coroutine mit coroutine.resume() fort
  • Geben Sie die Nachricht zurück, die ausgegeben wurde

Parameter:

  • message (string): Die Nachricht, die von der Coroutine ausgegeben werden soll

Rückgabewert: Die Nachricht, die von der Coroutine ausgegeben wurde (string)

Spickzettel

Um eine Coroutine zu erstellen, verwenden Sie coroutine.create() mit einer Funktion als Argument:

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

local co = coroutine.create(myTask)

Um die Ausführung einer Coroutine zu starten oder fortzusetzen, verwenden Sie coroutine.resume():

coroutine.resume(co)

Vollständiges Beispiel:

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

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

Wenn resume() zum ersten Mal aufgerufen wird, beginnt die Coroutine mit der Ausführung von Anfang an. Wenn sie ohne Unterbrechung bis zum Ende durchläuft, kann sie nicht erneut fortgesetzt werden.

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 Logic & Flow