Menu
Coddy logo textTech

criar e retomar uma corrotina

Parte da seção Lógica e Fluxo do Journey de Lua da Coddy. Lição 49 de 54.

Agora que você entende o que são corrotinas, vamos aprender como realmente criar e executá-las em Lua.

Para criar uma corrotina, você usa a função coroutine.create(). Essa função recebe uma função comum como argumento e a envolve em um objeto de corrotina. Veja a sintaxe básica:

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

local co = coroutine.create(myTask)

Neste momento, a coroutine existe, mas ainda não começou a ser executada. A função myTask ainda não foi chamada. Para realmente iniciar ou continuar a execução de uma coroutine, você usa coroutine.resume():

coroutine.resume(co)

Quando você chama resume() em uma corrotina pela primeira vez, ela começa a ser executada desde o início da função. Se a corrotina for executada até o fim sem pausar, ela é concluída e não pode ser retomada novamente.

Aqui está um exemplo completo:

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

local co = coroutine.create(greet)
coroutine.resume(co)  -- Imprime ambas as mensagens

A corrotina é executada do início ao fim de uma só vez. Na próxima lição, você aprenderá a fazer com que as corrotinas pausem no meio da execução.

challenge icon

Desafio

Fácil

Escreva uma função runSimpleCoroutine que receba uma message e retorne a saída de uma corrotina que imprime essa mensagem.

Crie uma corrotina usando coroutine.create() que envolva uma função que imprime a mensagem fornecida. Em seguida, use coroutine.resume() para executar a corrotina. A função deve retornar a mensagem que foi impressa.

Lógica:

  • Defina uma função que imprima o parâmetro de mensagem
  • Crie uma corrotina a partir dessa função usando coroutine.create()
  • Retome a corrotina usando coroutine.resume()
  • Retorne a mensagem que foi impressa

Parâmetros:

  • message (string): A mensagem a ser impressa pela corrotina

Retorna: A mensagem que foi impressa pela corrotina (string)

Experimente você mesmo

function runSimpleCoroutine(message)
    -- Escreva o código aqui
end
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Lógica e Fluxo

Pratique por conta própria: Compilador de Lua online