Dziękujemy za wysłanie zapytania! Jeden z członków naszego zespołu skontaktuje się z Państwem wkrótce.
Dziękujemy za wysłanie rezerwacji! Jeden z członków naszego zespołu skontaktuje się z Państwem wkrótce.
Plan Szkolenia
Wprowadzenie do Lua
- Krótka historia
- Cele, cechy i niecele Lua
- Zasoby dokumentacji i tutoriali Lua
- Instalacja interpretera Lua
- Konfiguracja i używanie LuaRocks
Podstawowa składnia i semantyka
- Identyfikatory
- Komentarze, blokowe komentarze
- Zmienne globalne i wymuszanie ścisłości
- Zmienne lokalne
- Programy samodzielne, argumenty programu
- Jednostki kompilacji, chunk, wyrażenia, średniki
Typy danych i struktury danych
- Podstawowe typy: nil, boolean, number, string
- Typy obiektowe: function, userdata, thread, table
- Referencje/obiekty a wartości podstawowe
- Znaczenie tabel w Lua
Wprowadzenie do tabel i ich wszechstronność
- Tabele jako tablice asocjacyjne
- Tabele jako tablice numeryczne, sekwencje
Podstawowe struktury sterowania
- Konstrukcja if then elseif else end
- Pętla while
- Pętla repeat
- Prosta pętla for
Obsługa błędów
- Wartości zwracane a wyjątki
- Konwersja wartości zwracanej na wyjątek
- Konwersja wyjątku na wartość zwracaną
- Poziomy błędów
Przykładowe programy
- Obliczanie wielomianów
- Przeszukiwanie wszerz (BFS)
- Dodatkowe ćwiczenia
Więcej o funkcjach
- Argumenty nazwane
- Wywołania obiektowe
- Domknięcia
- Currying
- Wywołania ogonowe
- Wielokrotne przypisanie i zwracanie
- Varargs
Iteratory i korutyny
- Pętla for generyczna
- Iteratory bezstanowe a stanowe
- Różnice między iteratorami a korutynami
Metatablice i metametody
- Przykład zbioru
- Metametoda __tostring
- Metametody arytmetyczne
- Metametody __index, __newindex
- Metametoda __len
Moduły i pakiety
- Używanie modułów
- Tworzenie modułów
- Organizacja modułów w pakiety
Zaawansowane tabele
- Tabele jako kolejki i stosy
- Tabele opisujące grafy
- Macierze jako tabele
- Listy powiązane jako tabele
- Bufory łańcuchowe
Metatablice na przykładach
- Proxy
- Readonly
- Memoizacja
- Programowanie dynamiczne z memoizacją
- Przykład Fibonacciego
Środowiska
- Związek między zmiennymi globalnymi a środowiskami
- Zmienne wolne
- Tabele _ENV i _G
Więcej o modułach
- Różne podejścia do tworzenia modułów
- Moduły zmieniające zachowanie
- Inicjalizacja modułów i argumenty
- Używanie środowisk do implementacji bezpiecznych modułów
Zaawansowane iteratory i korutyny
- Producent, konsument, filtr
- Opakowywanie korutyn w iteratory
- Iterator bezstanowy dla list powiązanych
Wkład w ekosystem
- Przesyłanie pakietów do MoonRocks
Paradygmat funkcyjny w Lua
- Funkcja map
- Funkcja reduce / fold
Programowanie obiektowe
- Różne podejścia do OOP
- Różne podejścia do dziedziczenia
- Przykłady
Przegląd standardowych bibliotek Lua
Kompilacja
- Kompilacja
- Eval
- Związek ze środowiskiem
- Chunki binarne
Zarządzanie pamięcią
- Słabe tabele
- Finalizatory, metametoda __gc
Bajtkod Lua i maszyna wirtualna
- Generowanie bajtkodu z kodu źródłowego
- Czytanie i analiza bajtkodu
- Szybki przegląd kodu źródłowego maszyny wirtualnej Lua
Moduły C
- Wywołanie C z Lua
- Ścieżka wyszukiwania i ładowanie modułów C
Wywołanie Lua z C
- Stos
- Obsługa błędów
- Kontynuacje
Obsługa wartości i typów Lua z C
- Tablice
- Łańcuchy znaków
- Userdata
- Metatablice
- Wywołania obiektowe
- Lekkie userdata
Zarządzanie pamięcią
- Alokatory
- API GC
Wątki w Lua
- Korutyny a wątki
- Prawdziwe wielowątkowość i stany Lua
Wymagania
Znajomość przynajmniej jednego innego języka programowania. Doświadczenie w programowaniu. Opcjonalnie, jeśli masz doświadczenie z innymi językami skryptowymi, ułatwi to zrozumienie Lua.
21 godzin