Menu
Coddy logo textTech

coroutine create & resume

Fait partie de la section Logic & Flow du Journey Lua de Coddy — leçon 49 sur 54.

Maintenant que vous comprenez ce que sont les coroutines, apprenons comment les créer et les exécuter concrètement en Lua.

Pour créer une coroutine, vous utilisez la fonction coroutine.create(). Cette fonction prend une fonction régulière comme argument et l'enveloppe dans un objet coroutine. Voici la syntaxe de base :

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

local co = coroutine.create(myTask)

À ce stade, la coroutine existe mais n'a pas encore commencé à s'exécuter. La fonction myTask n'a pas été appelée. Pour démarrer ou continuer réellement l'exécution d'une coroutine, vous utilisez coroutine.resume() :

coroutine.resume(co)

Lorsque vous appelez resume() sur une coroutine pour la première fois, elle commence à s'exécuter depuis le début de sa fonction. Si la coroutine s'exécute jusqu'au bout sans s'interrompre, elle se termine et ne peut plus être reprise.

Voici un exemple complet :

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

local co = coroutine.create(greet)
coroutine.resume(co)  -- Affiche les deux messages

La coroutine s'exécute du début à la fin en une seule fois. Dans la prochaine leçon, vous apprendrez comment mettre les coroutines en pause au milieu de l'exécution.

challenge icon

Défi

Facile

Écrivez une fonction runSimpleCoroutine qui prend un message et renvoie la sortie d'une coroutine qui affiche ce message.

Créez une coroutine en utilisant coroutine.create() qui enveloppe une fonction affichant le message fourni. Ensuite, utilisez coroutine.resume() pour exécuter la coroutine. La fonction doit retourner le message qui a été affiché.

Logique :

  • Définissez une fonction qui affiche le paramètre message
  • Créez une coroutine à partir de cette fonction en utilisant coroutine.create()
  • Reprenez la coroutine en utilisant coroutine.resume()
  • Retournez le message qui a été affiché

Paramètres :

  • message (string) : Le message à afficher par la coroutine

Retourne : Le message qui a été affiché par la coroutine (string)

Aide-mémoire

Pour créer une coroutine, utilisez coroutine.create() avec une fonction comme argument :

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

local co = coroutine.create(myTask)

Pour démarrer ou continuer l'exécution d'une coroutine, utilisez coroutine.resume() :

coroutine.resume(co)

Exemple complet :

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

local co = coroutine.create(greet)
coroutine.resume(co)  -- Affiche les deux messages

Lorsque resume() est appelé pour la première fois, la coroutine commence son exécution depuis le début. Si elle s'exécute jusqu'à la fin sans s'interrompre, elle ne peut plus être reprise.

Essayez vous-même

function runSimpleCoroutine(message)
    -- Écrivez le code ici
end
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Logic & Flow