Menu
Coddy logo textTech

coroutine create y resume

Parte de la sección Lógica y flujo de control del Journey de Lua de Coddy. Lección 49 de 54.

Ahora que entiendes qué son las corrutinas, aprendamos a crearlas y ejecutarlas realmente en Lua.

Para crear una corrutina, usas la función coroutine.create(). Esta función recibe una función normal como argumento y la envuelve en un objeto de corrutina. Esta es la sintaxis básica:

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

local co = coroutine.create(myTask)

En este punto, la corrutina existe, pero todavía no ha comenzado a ejecutarse. La función myTask no se ha llamado. Para iniciar o continuar realmente la ejecución de una corrutina, usas coroutine.resume():

coroutine.resume(co)

Cuando llamas a resume() en una corrutina por primera vez, comienza a ejecutarse desde el principio de su función. Si la corrutina se ejecuta por completo sin pausarse, termina y no se puede reanudar de nuevo.

Aquí tienes un ejemplo completo:

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

local co = coroutine.create(greet)
coroutine.resume(co)  -- Imprime ambos mensajes

La corrutina se ejecuta de principio a fin de una sola vez. En la próxima lección, aprenderás a hacer que las corrutinas se pausen en mitad de la ejecución.

challenge icon

Desafío

Fácil

Escribe una función runSimpleCoroutine que tome un message y devuelva la salida de una corrutina que imprime ese mensaje.

Crea una corrutina usando coroutine.create() que envuelva una función que imprime el mensaje proporcionado. Después, usa coroutine.resume() para ejecutar la corrutina. La función debe devolver el mensaje que se imprimió.

Lógica:

  • Define una función que imprima el parámetro message
  • Crea una corrutina a partir de esa función usando coroutine.create()
  • Reanuda la corrutina usando coroutine.resume()
  • Devuelve el mensaje que se imprimió

Parámetros:

  • message (cadena): El mensaje que imprimirá la corrutina

Devuelve: El mensaje que imprimió la corrutina (cadena)

Pruébalo tú mismo

function runSimpleCoroutine(message)
    -- Escribe código aquí
end
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Lógica y flujo de control

Practica por tu cuenta: Compilador de Lua online