Menu
Coddy logo textTech

coroutine create & resume

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 criá-las e executá-las em Lua.

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

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

local co = coroutine.create(myTask)

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

coroutine.resume(co)

Quando você chama resume() em uma corrotina pela primeira vez, ela começa a ser executada a partir do início de sua 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á como fazer as corrotinas pausarem no meio da execução.

challenge icon

Desafio

Fácil

Escreva uma função runSimpleCoroutine que recebe uma message e retorna a saída de uma coroutine que imprime essa mensagem.

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

Lógica:

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

Parâmetros:

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

Retorna: A mensagem que foi impressa pela coroutine (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