Menu
Coddy logo textTech

Tworzenie i wznawianie korutyny

Część sekcji Logika i przepływ programu ścieżki Lua w Coddy. Lekcja 49 z 54.

Skoro wiesz już, czym są korutyny, nauczmy się, jak je tworzyć i uruchamiać w Lua.

Aby utworzyć korutynę, użyj funkcji coroutine.create(). Funkcja ta przyjmuje zwykłą funkcję jako argument i opakowuje ją w obiekt korutyny. Oto podstawowa składnia:

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

local co = coroutine.create(myTask)

Na tym etapie korutyna istnieje, ale jeszcze nie zaczęła działać. Funkcja myTask nie została wywołana. Aby faktycznie rozpocząć lub kontynuować wykonywanie korutyny, użyj coroutine.resume():

coroutine.resume(co)

Gdy po raz pierwszy wywołasz resume() dla korutyny, zacznie ona wykonywać swoją funkcję od początku. Jeśli korutyna wykona ją do końca bez zatrzymywania się, zakończy działanie i nie będzie można jej wznowić.

Oto kompletny przykład:

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

local co = coroutine.create(greet)
coroutine.resume(co)  -- Wyświetla oba komunikaty

Korutyna działa od początku do końca za jednym razem. W następnej lekcji dowiesz się, jak sprawić, by korutyny zatrzymywały się w trakcie wykonywania.

challenge icon

Wyzwanie

Łatwy

Napisz funkcję runSimpleCoroutine, która przyjmuje message i zwraca wynik z korutyny, która wypisuje tę wiadomość.

Utwórz korutynę za pomocą coroutine.create(), która opakowuje funkcję wypisującą przekazaną wiadomość. Następnie użyj coroutine.resume(), aby wykonać korutynę. Funkcja powinna zwracać wypisaną wiadomość.

Logika:

  • Zdefiniuj funkcję, która wypisuje parametr message
  • Utwórz korutynę z tej funkcji za pomocą coroutine.create()
  • Wznów korutynę za pomocą coroutine.resume()
  • Zwróć wypisaną wiadomość

Parametry:

  • message (string): Wiadomość, którą ma wypisać korutyna

Zwraca: Wiadomość wypisaną przez korutynę (string)

Spróbuj swoich sił

function runSimpleCoroutine(message)
    -- Wpisz tutaj kod
end
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Logika i przepływ programu

Poćwicz samodzielnie: Kompilator Lua online