Czym jest korutyna?
Część sekcji Logika i przepływ programu ścieżki Lua w Coddy. Lekcja 48 z 54.
Pomyśl o graniu w grę wideo. Możesz ją w dowolnym momencie zatrzymać, zająć się czymś innym, a potem wrócić i wznowić grę dokładnie w miejscu, w którym ją przerwano. Korutyny w Lua działają w podobny sposób.
Korutyna przypomina specjalną funkcję, która może wstrzymać działanie w trakcie wykonywania, a następnie wznowić je później dokładnie od tego samego miejsca. W przeciwieństwie do zwykłych funkcji, które wykonują się od początku do końca bez zatrzymywania, korutyny pozwalają kontrolować, kiedy wstrzymują działanie i je wznawiają.
Ta możliwość pozwala na coś, co nazywa się wielozadaniowością kooperacyjną. Zamiast wykonywać wiele zadań dokładnie w tym samym czasie, korutyny pozwalają dobrowolnie przełączać się między różnymi zadaniami.
Jedna korutyna działa przez chwilę, wstrzymuje się, sterowanie przejmuje inna i tak dalej. Każda korutyna współpracuje, decydując, kiedy oddać sterowanie.
Korutyny są przydatne, gdy trzeba podzielić długotrwałe operacje, zarządzać systemami turowymi lub tworzyć sekwencje, które muszą pamiętać swój stan między wywołaniami. W kolejnych lekcjach nauczysz się tworzyć, wstrzymywać i wznawiać korutyny w Lua.
Spróbuj swoich sił
Ta lekcja nie zawiera wyzwania z kodem.
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
1Zaawansowane iterowanie po tabelach
Iterowanie za pomocą pairs()Iterowanie za pomocą ipairs()pairs() a ipairs()Powtórka — karta postaci2Więcej funkcji biblioteki table
table.concat()Tworzenie tabel i unpack()table.sort()Sortowanie niestandardowe za pomocą funkcjiPodsumowanie — tablica najlepszych wyników5Projekt: silnik tekstowej gry przygodowej
Konfiguracja projektu: pokójŁączenie pokoi3Zaawansowane koncepcje funkcji
Zwracanie wielu wartościFunkcje wariadyczne (...)Funkcje jako wartości pierwszej klasyFunkcje anonimoweCzym jest domknięcie?Podsumowanie — prosty obsługiwacz zdarzeń6Obsługa błędów
Funkcja error()Wywołania chronione za pomocą pcall()Podsumowanie — bezpieczne dzielenie9Korutyny dla początkujących
Czym jest korutyna?Tworzenie i wznawianie korutynyWstrzymywanie za pomocą coroutine.yield()resume i yieldSprawdzanie stanu korutynyPowtórka — generator liczbPowtórka — matematyka wektorowaPoćwicz samodzielnie: Kompilator Lua online