Mulțumim pentru trimiterea solicitării! Un membru al echipei noastre vă va contacta în curând.
Mulțumim pentru trimiterea rezervării! Un membru al echipei noastre vă va contacta în curând.
Schița de curs
Introducere în Lua
- Puțină istorie
- Obiectivele, caracteristicile și non-obiectivele Lua
- Resurse de documentație și tutoriale Lua
- Instalarea interpretorului Lua
- Configurarea și utilizarea LuaRocks
Sintaxă și semantică de bază
- Identificatori
- Comentarii, comentarii pe bloc
- Variabile globale și aplicarea strictității
- Variabile locale
- Programe independente, argumente ale programului
- Unități de compilare, bucăți, expresii, punct și virgulă
Tipuri de date și structuri de date
- Tipuri de bază: nil, boolean, număr, șir de caractere
- Tipuri de obiecte: funcție, userdata, thread, tabel
- Referințe/obiecte vs. valori de bază
- Importanța tabelelor în Lua
Introducere în tabele și versatilitatea lor
- Tabele ca array asociativ
- Tabele ca array numeric, secvențe
Structuri de control de bază
- Structura if then elseif else end
- Bucla while
- Bucla repeat
- Bucla for simplă
Gestionarea erorilor
- Valori de return vs excepții
- Conversia unei valori de return într-o excepție
- Conversia unei excepții într-o valoare de return
- Niveluri de eroare
Programe exemplu
- Evaluarea polinoamelor
- Căutarea în lățime
- Exerciții suplimentare
Mai multe despre funcții
- Argumente numite
- Apeluri orientate pe obiecte
- Closures
- Currying
- Apeluri finale
- Atribuire și returnare multiplă
- Varargs
Iteratori și co-rutine
- Bucla for generică
- Iteratori fără stare vs. cu stare
- Diferențe între iteratori și co-rutine
Metatabele și metametode
- Exemplul set
- Metametoda __tostring
- Metametode aritmetice
- Metametodele __index, __newindex
- Metametoda __len
Module și pachete
- Utilizarea modulelor
- Crearea modulelor
- Organizarea modulelor în pachete
Tabele avansate
- Tabele pentru cozi și stive
- Tabele pentru descrierea grafurilor
- Matrice ca tabele
- Liste înlănțuite ca tabele
- Buffere de șiruri
Metatabele prin exemple
- Proxiuri
- Readonly
- Memoizare
- Programare dinamică cu memoizare
- Exemplul Fibonacci
Medii
- Relația dintre variabilele globale și medii
- Variabile libere
- Tabelele _ENV și _G
Mai multe despre module
- Diferite abordări pentru crearea modulelor
- Module care modifică comportamentul
- Inițializarea și argumentele modulelor
- Utilizarea mediilor pentru a implementa module sigure
Iteratori și co-rutine avansate
- Producător, consumator, filtru
- Înfășurarea co-rutinelor pentru a obține iteratori
- Iterator fără stare pentru liste înlănțuite
Contribuții la ecosistem
- Încărcarea pachetelor pe MoonRocks
Paradigma funcțională în Lua
- Funcția map
- Funcția reduce / fold
Programare orientată pe obiecte
- Diferite abordări ale OOP
- Diferite abordări ale moștenirii
- Exemple
O privire de ansamblu asupra bibliotecilor standard Lua
Compilare
- Compilare
- Eval
- Relația cu mediul
- Bucăți binare
Colectarea deșeurilor
- Tabele slabe
- Finalizatori, metametoda __gc
Bytecode și mașina virtuală Lua
- Generarea bytecode din codul sursă
- Citirea și analizarea bytecode
- Tur rapid prin codul sursă al mașinii virtuale Lua
Module C
- Apelarea C din Lua
- Calea de căutare și încărcarea modulelor C
Apelarea Lua din C
- Stiva
- Gestionarea erorilor
- Continuări
Manipularea valorilor și tipurilor Lua din C
- Array-uri
- Șiruri de caractere
- Userdata
- Metatabele
- Apeluri orientate pe obiecte
- Light userdata
Gestionarea memoriei
- Alocatori
- API pentru colecția de deșeuri
Fire de execuție în Lua
- Co-rutine vs fire de execuție
- Multithreading real și stări Lua
Cerințe
Cunoștințe de bază despre cel puțin un alt limbaj de programare. Experiență în programare. Opțional, dacă ai cunoștințe despre alte limbaje de scriptare, acest lucru va face mai ușor înțelegerea Lua.
21 Ore