Thank you for sending your enquiry! One of our team members will contact you shortly.
Thank you for sending your booking! One of our team members will contact you shortly.
Struttura del corso
Introduzione a Lua
- Un po' di storia
- Obiettivi, caratteristiche e non obiettivi di Lua
- Risorse di Lua documentazione ed esercitazioni
- Installazione dell'interprete Lua
- Impostazione e utilizzo di LuaRocks
Sintassi e semantica di base
- Identificatori
- Commenti, bloccare i commenti
- Variabili globali e applicazione del rigore
- Variabili locali
- Programmi autonomi, argomenti di programma
- Unità di compilazione, blocchi, espressioni, punto e virgola
Tipi di dati e strutture di dati
- Tipi di base: nil, booleano, numero, stringa
- Tipi di oggetto: function, userdata, thread, table
- Riferimenti/oggetti vs. valori di base
- L'importanza delle tabelle in Lua
Introduzione alle tabelle e alla loro versatilità
- Tabelle come array associativo
- Tabelle come matrici numeriche, sequenze
Strutture di controllo di base
- L'if then elseif else end
- Il ciclo while
- Il ciclo di ripetizione
- Il semplice ciclo for
Gestione degli errori
- Valori restituiti ed eccezioni
- Conversione di un valore restituito in un'eccezione
- Conversione di un'eccezione in un valore restituito
- Livelli di errore
Esempi di programmi
- Valutazione polinomiale
- Ampiezza prima ricerca
- Esercizi aggiuntivi
Maggiori informazioni sulle funzioni
- Argomenti denominati
- Chiamate orientate agli oggetti
- Chiusure
- Currying
- Chiamate di coda
- Assegnazione multipla e restituzione
- Varargs
Iteratori e co-routine
- Il ciclo for generico
- Iteratori senza stato e iteratori con stato
- Differenze tra iteratori e co-routine
Metatabelle e metametodi
- L'esempio dato
- Il metametodo __tostring
- Metametodi aritmetici
- I metametodi __index __newindex
- Il metametodo __len
Moduli e pacchetti
- Utilizzo dei moduli
- Creazione di moduli
- Organizzazione dei moduli in pacchetti
Tabelle avanzate
- Tabelle per code e pile
- Tabelle che descrivono i grafici
- Matrici come tabelle
- Liste concatenate come tabelle
- Buffer di stringa
Metatable attraverso esempi
- Proxy
- Sola lettura
- Memorizzazione
- Programmazione dinamica con memorizzazione
- L'esempio di Fibonacci
Ambienti
- Relazione tra variabili globali e ambienti
- Variabili libere
- La tabella _ENV e la tabella _G
Maggiori informazioni sui moduli
- Diversi approcci alla creazione di moduli
- Moduli che modificano il comportamento
- Inizializzazione e argomenti del modulo
- Utilizzo di ambienti per l'implementazione di moduli sicuri
Iteratori avanzati e co-routine
- Produttore, consumatore, filtro
- Wrapping delle co-routine per ottenere iteratori
- Iteratore senza stato per elenchi collegati
Contribuire all'ecosistema
- Caricamento di pacchetti su MoonRocks
Paradigma funzionale in Lua
- La funzione mappa
- La funzione di riduzione/piegatura
Orientato agli oggetti Programming
- Diversi approcci all'OOP
- Diversi approcci all'ereditarietà
- Esempi
Procedura dettagliata delle librerie standard Lua
Compilazione
- Compilazione
- Eval
- Rapporto con l'ambiente
- Blocchi binari
Garbage Collection (Raccolta dei rifiuti)
- Tabelle deboli
- Finalizzatori, il meta-metodo __gc
Lua Bytecode e macchina virtuale
- Generazione di bytecode dal codice sorgente
- Lettura e analisi del bytecode
- Presentazione rapida del codice sorgente della macchina virtuale Lua
Moduli C
- Chiamare C da Lua
- Search percorso e caricamento dei moduli C
Chiamata Lua da C
- La pila
- Gestione degli errori
- Continuazioni
Gestione di valori e tipi Lua da C
- Matrici
- Stringhe
- Dati dell'utente
- Metatabelle
- Chiamate orientate agli oggetti
- Dati utente leggeri
Gestione della memoria
- Il 25-day-a
- GC API
Discussioni in Lua
- Confronto tra co-routine e thread
- Multi-threading reale e stati Lua
Requisiti
Familiarità con almeno un altro linguaggio di programmazione. Programming Esperienza. Opzionalmente, se si ha familiarità con altri linguaggi di scripting, ciò renderà più facile la comprensione di Lua.
21 ore