Menu
Coddy logo textTech

créer et reprendre une coroutine

Fait partie de la section Logique et flux du Journey Lua de Coddy. Leçon 49 sur 54.

Maintenant que tu comprends ce que sont les coroutines, apprenons à les créer et à les exécuter réellement en Lua.

Pour créer une coroutine, vous utilisez la fonction coroutine.create(). Cette fonction prend une fonction ordinaire comme argument et l’encapsule 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 elle n’a pas encore commencé à s’exécuter. La fonction myTask n’a pas été appelée. Pour réellement démarrer ou poursuivre l’exécution d’une coroutine, utilisez coroutine.resume() :

coroutine.resume(co)

Lorsque vous appelez resume() sur une coroutine pour la première fois, elle commence son exécution au début de sa fonction. Si la coroutine s’exécute entièrement sans se mettre en pause, 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 d’une seule traite. Dans la prochaine leçon, tu apprendras à faire une pause aux coroutines au milieu de leur exécution.

challenge icon

Défi

Facile

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

Crée une coroutine à l’aide de coroutine.create() qui encapsule une fonction affichant le message fourni. Utilise ensuite coroutine.resume() pour exécuter la coroutine. La fonction doit renvoyer le message qui a été affiché.

Logique :

  • Définir une fonction qui affiche le paramètre message
  • Créer une coroutine à partir de cette fonction à l’aide de coroutine.create()
  • Reprendre la coroutine à l’aide de coroutine.resume()
  • Renvoyer le message qui a été affiché

Paramètres :

  • message (chaîne de caractères) : le message à afficher par la coroutine

Renvoie : le message qui a été affiché par la coroutine (chaîne de caractères)

Essayez vous-même

function runSimpleCoroutine(message)
    -- Écrire 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 Logique et flux

Entraînez-vous par vous-même : Compilateur Lua en ligne