Kursplan

Introduktion till Lua

  • Lite historia
  • Luas mål, funktioner och icke-mål
  • Resurser för Lua dokumentation och handledning
  • Installation av Lua-tolken
  • Konfigurera och använda LuaStenar

Grundläggande syntax och semantik

  • Identifierare
  • Kommentarer, blockera kommentarer
  • Globala variabler och upprätthållande av strikthet
  • Lokala variabler
  • Fristående program, programargument
  • Sammanställningsenheter, bitar, uttryck, semikolon

Datatyper och datastrukturer

  • Grundläggande typer: noll, boolean, nummer, sträng
  • Objekttyper: funktion, användardata, tråd, tabell
  • Referenser/objekt kontra grundläggande värderingar
  • Vikten av tabeller i Lua

Introduktion till bord och deras mångsidighet

  • Tabeller som en associativ array
  • Tabeller som numeriska arrayer, sekvenser

Grundläggande kontrollstrukturer

  • The if then elseif else slut
  • While-slingan
  • Upprepningsslingan
  • Det enkla för loop

Felhantering

  • Returvärden kontra undantag
  • Konvertera ett returvärde till ett undantag
  • Konvertera ett undantag till ett returvärde
  • Felnivåer

Exempel på program

  • Polynomutvärdering
  • Utöka första sökningen
  • Ytterligare övningar

Mer om funktioner

  • Namngivna argument
  • Objektorienterade samtal
  • Stängningar
  • Curry
  • Svansanrop
  • Flera uppdrag och retur
  • Varargs

Iteratorer och samrutiner

  • Det generiska för loop
  • Statslösa kontra statliga iteratorer
  • Skillnader mellan iteratorer och samrutiner

Metatabeller och metametoder

  • Det fasta exemplet
  • __tostring-metametoden
  • Aritmetiska metametoder
  • Metametoderna __index, __newindex
  • __len-metametoden

Moduler och paket

  • Använda moduler
  • Skapa moduler
  • Organisera moduler i paket

Avancerade tabeller

  • Tabeller för köer och travar
  • Tabeller som beskriver grafer
  • Matriser som tabeller
  • Länkade listor som tabeller
  • Strängbuffertar

Metatables genom exempel

  • Ombud
  • Skrivskyddad
  • Memoisering
  • Dynamisk programmering med memoisering
  • Fibonacci-exemplet

Miljöer

  • Samband mellan globala variabler och miljöer
  • Fria variabler
  • Tabellen _ENV och tabellen _G

Mer om moduler

  • Olika tillvägagångssätt för att skapa moduler
  • Moduler som förändrar beteendet
  • Modulinitiering och argument
  • Använda miljöer för att implementera säkra moduler

Avancerade iteratorer och samrutiner

  • Producent, konsument, filter
  • Slå in ko-rutiner för att få iteratorer
  • Statslös iterator för länkade listor

Att bidra till ekosystemet

  • Laddar upp paket till MoonRocks

Funktionellt paradigm i Lua

  • Kartfunktionen
  • Minska/vik-funktionen

Objektorienterad Programming

  • Olika förhållningssätt till OOP
  • Olika synsätt på arv
  • Exempel

En genomgång av standardbiblioteken Lua

Kompilering

  • Kompilering
  • Eval
  • Relation med miljön
  • Binära bitar

Skräp samling

  • Svaga bord
  • Finalizers, __gc-metametoden

Lua bytekod och virtuell maskin

  • Genererar bytekod från källkoden
  • Läsa och analysera bytecode
  • Snabb rundtur i källkoden för Lua VM

C-moduler

  • Ringer C från Lua
  • Search väg och laddning av C-moduler

Ringer Lua från C

  • Stacken
  • Felhantering
  • Fortsättningar

Hantera Lua värden och typer från C

  • Matriser
  • Strängar
  • Användardata
  • Metatables
  • Objektorienterade samtal
  • Lätt användardata

Minneshantering

  • Tilldelare
  • GC API

Trådar i Lua

  • Samrutiner vs trådar
  • Verklig multi-threading och Lua tillstånd

Krav

Bekanta med minst ett annat programmeringsspråk. Programming erfarenhet. Om du är bekant med andra skriptspråk, kommer det att göra det lättare att förstå Lua.

 21 timmar

Antal deltagare


Price per participant

Upcoming Courses