debugging in Lua Universität zu Köln Re-usable Content in 3D und Simulationssystemen Prof. Dr. Manfred Thaller Referent: Artur Wilke
Merkmale von Lua Typenbindung ist dynamisch Variablen sind Typ-frei Werte von Daten hingegen sind Typ-behaftet Speicherverwaltung erfolgt automatisch Nicht benötigter Speicher wird freigegeben Möglichkeit der Erweiterbaren Semantik
Merkmale von Lua Sprache Lua selbst nicht objektorrientiert Durch Lua eigene Mittel lassen Mechanismen der Objektorientieren Programmierung einbauen (zB. Vererbung) Ist als Erweiterungssprache gedacht (zB. für die Integration in C/C++) Kann auch eigenständig genutzt werden
Konventionen zu Benennungen Normale Variablen beginnen mit Kleinbuchstaben Funktionen beginnen mit Großbuchstaben Parameter beginnen mit einen Unterstrich
Syntax Kommentare sind mit -- eingeleitet. Mehrzeilige Kommentare sind mit -- [[ möglich. Kommentarende ist bei ]] Anweisungen können mit einem ; geschlossen werden
Operatoren "=" --> Zuweisungsoperator "+" --> Additionsoperator "-" --> Subtraktionsoperator oder auch Negationsoperator "*" --> Multiplikationsoperator "/" --> Divisionsoperator ".." --> Verknüpfungsoperator
If-else if (Bedingung) then (Anweisungsblock den Fall) else (Anweisungsblock für unbehandelte Fälle) end
If-ifelse if (Bedingung A) then (Anweisungsblock für Fall A) elseif (Bedingung B) then (Anweisungsblock für Fall B) (optional: else (Anweisungsblock für unbehandelte Fälle)) end
Do-while Schleife while (Bedingung) do (Anweisung) end
Repeat-until repeat (Anweisungen) until (Bedingung)
Reservierte Schlüsselwörter and break do else elseif end false for function if in local nil not or repeat return then true until while
Fehlerquellen Verwendete Schlüsselwörter als Name Zeichen vergessen: statt.. nur. / statt -- nur – Funktion, Schleife, etc nicht mit end beendet Eingebundene Datei nicht im selben Ordner
Leere Werte oder 0 sind keine leeren Werte Nur nil und false sind nichts. Eine leere Tabele {} ist nil nil kann als Abfrage genutzt werden
Reihenfolge beachten! Lokale Funktionen: Erst definieren Dann verwenden Bei Verschachtelungen gilt das Zwiebelprinzip
Programmabstürze unterdrücken Mit der Funktion pcall lassen sich unerwünschte Programmabbrüche vermeiden pcall = protected call Fehlerhafte Funktion führt nicht zu Programmabbruch Syntax: pcall (f, arg1, ···)
Defensives Programmieren Bevor mit Werten gearbeitet wird, erst überprüfen ob diese gegeben sind Bsp. Ausgelagerte Datei Nutzereingaben
Lua-Editor/Debugger Löve Studio: LuaEdit:
Quellen: rozek.de/Lua/Modules/FunctionProtection.ht ml rozek.de/Lua/Modules/FunctionProtection.ht ml Tutorial_-_1_Grundlagen Tutorial_-_1_Grundlagen mmierung