Menu
Coddy logo textTech

Creare e riprendere una coroutine

Fa parte della sezione Logica e flusso del percorso Lua di Coddy. Lezione 49 di 54.

Ora che hai capito cosa sono le coroutine, impariamo a crearle e ad avviarle in Lua.

Per creare una coroutine, usa la funzione coroutine.create(). Questa funzione accetta una funzione normale come argomento e la racchiude in un oggetto coroutine. Ecco la sintassi di base:

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

local co = coroutine.create(myTask)

A questo punto, la coroutine esiste, ma non ha ancora iniziato a essere eseguita. La funzione myTask non è stata chiamata. Per avviare o riprendere effettivamente l’esecuzione di una coroutine, usa coroutine.resume():

coroutine.resume(co)

Quando chiami resume() su una coroutine per la prima volta, inizia l’esecuzione dall’inizio della sua funzione. Se la coroutine viene eseguita fino alla fine senza pause, si completa e non può essere ripresa di nuovo.

Ecco un esempio completo:

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

local co = coroutine.create(greet)
coroutine.resume(co)  -- Stampa entrambi i messaggi

La coroutine viene eseguita dall'inizio alla fine tutta d'un fiato. Nella prossima lezione imparerai a far sì che le coroutine si mettano in pausa a metà dell'esecuzione.

challenge icon

Sfida

Facile

Scrivi una funzione runSimpleCoroutine che accetta un message e restituisce l'output di una coroutine che stampa quel messaggio.

Crea una coroutine usando coroutine.create() che racchiude una funzione che stampa il messaggio fornito. Poi usa coroutine.resume() per eseguire la coroutine. La funzione deve restituire il messaggio che è stato stampato.

Logica:

  • Definisci una funzione che stampa il parametro message
  • Crea una coroutine a partire da quella funzione usando coroutine.create()
  • Riprendi la coroutine usando coroutine.resume()
  • Restituisci il messaggio che è stato stampato

Parametri:

  • message (stringa): Il messaggio che la coroutine deve stampare

Restituisce: Il messaggio che è stato stampato dalla coroutine (stringa)

Provalo tu

function runSimpleCoroutine(message)
    -- Scrivi il codice qui
end
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Logica e flusso

Esercitati da solo: Compilatore Lua online