Sonntag, 18. Dezember 2016

Lua Tutorial - #02 - Variable & Tables

Variable

In lua benötigt man bei der definition von variabeln keinen typen angeben. In Lua kann jede variable jeden typen annehmen. Es gibt lediglich 2 zugriffs operatoren 'local' und 'global'.


Eine Variable die keinen dieser zugriffsopreatoren hatt ist automatisch global.
global = von überall zugreifbar, braucht nicht deklariert werden
local = nur in dieser datei / funktion nutzbar

Der rest ist einfache variable manipulation. Mit '=' weisen wir der variable einen wert zu, abrufen wird durch einfaches einsetzen der variable durchgeführt.

Tables

Tables sind in lua ein all-arounder variabeln typ. Er kann als array und als key=value (map) abruf verwendet werden.

Um die anzahl der einträge zu ermitteln wird ein vorgestelltes '#' benutzt.

- Arrays

Bei arrays (auch manchmal listen gennant) in lua ist darauf zu achten das das erste element nicht wie bei anderen programmiersprachen auf der [0] liegt sondern auf der [1]. Der syntax für die deklaration ist wie folgt: 'tVar = { <value>, <value>, ... }'. In lua ist es häufig üblich ein kleines t am anfag der variable zu schreiben um darauf hinzuweisen das es sich hierbei um ein table handelt. In <value> kann alles eingesetzt werden was man gerade so benötigt.

Zum abruf bzw setzen eines eintrages wird einfach 'tVar[i]' benutzt.


- Maps

Maps sind eigentlich sehr einfach zu deklarieren: 'tVar = { <key> = <value>, ... }'. Dabei ist darauf zu achten das bei <key> keinerlei variabeln (also z.b. eine 0 oder ein string wie z.b. "insert" o.a) genutzt wird, sondern einfach der name des eintrages einfach eingetragen wird (fast so wie die deklaration von variabeln, nur ohne den zugriffsoperator).

Um einen eintrag auszulesen bzw zu setzen wird einfach 'tVar.<key>' benuzt.


- Standartfunktionen von lua
Offizielle dokumentation (englisch), übersezung (deutsch)

Samstag, 17. Dezember 2016

Lua Tutorial - #01 - Setup & Hello World

#0 - Lua - ein überblick

Lua zählt wie zB. phyton zu den skriptsprachen. Aber was sind eigentlich skriptsprachen? Im gegensatz zu normalen programmiersprachen, werden skripts nicht komplimiert (auser ein paar ausnahmen) sondern >interpretiert< also der sourcecode wird direkt ausgeführt.
Auch funktioniert Lua im gegensatz zu allen anderen komplimerabhängigen sprachen wie zB. C, C++ oder Java ohne irgendeine main-funktion (ausgenommen sind daraus frameworks wie LÖVE). Direkt in der erste zeile des sourcecodes können wir eine funktion aufrufen zB um text auszugeben.

#0.1 - Die IDE

Als erstes sollten wir mit der IDE loslegen damit wir überhaupt eine möglichkeit haben Lua-skripts zu schreiben und auszuführen.
Ich habe gute erfahrung mit der IDE "ZeroBrane Studio" gemacht, welche kostenlos herunterladbar ist: https://studio.zerobrane.com/
Eine installation ist dabei nicht notwendig, sondern wir müssen lediglich das heruntergeladene Archiv entpacken und die Anwendung starten.



Um ein projekt zu beginnen oder um eines der von der IDE mitgebrachten beispielen auszuführen müssen wir dazu den projekt ordner ändern. Dazu machen wir einen rechts-klicken auf den ordner links im tab 'Project' und wählen unter 'Project Directory' -> 'Set to selected Directory' an. Nun haben wir das projekt erfolgreich geändert.



Wenn ein spezieller interpreter benötigt wird können wir diesen in der Menüleiste unter 'Project' -> 'Lua Interpreter' auswählen. Dies wird benötigt um z.B. die beispiele von LÖVE oder Moai auszuführen. Davor muss der interpreter jedoch installiert werden, da die IDE standartmäßig nur den normalen lua interpreter mitbringt. Tutorials dazu können folgen.

#0.2 - Die dokumentation

Von lua gibt es auf der offiziellen seite eine dokumentation https://www.lua.org/manual/5.3/
Hier können (meist auf einglish) auch gute tutorials gefunden werden, sowie die gesamte übersicht der standartfunktionen.

Für eine deutsche übersetzung aller standartfunktionen siehe hier (in arbeit)

#0.3 - Anmerkungen zum tutorial

Wörter wie z.b. <key> (also mit < am anfang und > am ende) sind lediglich platzhalter und sind zu ersetzen.

Sollte innerhalb einer definition für funktionen (meinst standartfunktionen von lua) ein [] auftauchen, so sind das optionale parameter der funktion

#1 - Hello world

Wir fangen wie jedesmal ein hello world projekt an. Dazu legen wir in unsrem tutorialprojekt eine lua datei an mit dem namen 'HelloWorld.lua'.


Die datei wurde erstellt und mit einem doppelclick wird sie auch gleich zur bearbeitung geöffnet. Nun geben wir den code "print("HelloWorld from Lua!")" ein.


Nun müssen wir nur noch auf die zwei grünen dreiecke nach rechts klicken (runnen) und unser kleines programm wird ausgeführt.


In der roten markierung ist unser ausgegebener text zu sehen. Die methode "print" ist zum ausgeben von debug ausgaben gedacht.