Lua/Syntax
Dieser Wiki-Artikel gibt einen Kurzen Überblick über die Lua-Syntax.
Schlüsselwörter
Es gibt daher in Lua 5.4, der aktuellen Version zum Zeitpunkt der Erstellung des Artikels, nur 22 vordefinierte Schlüsselwörter (zur Einordnung Python hat 35, PHP 58, und C++ zum Beispiel hat 60 Schlüsselwörter).
and break do else elseif end false for function goto if in local nil not or repeat return then true until while
Die Schlüsselwörter sind schreibungsabhängig. Das reservierte Schlüsselwort or
und ein anderweitig frei vergebenes oder genutztes OR
zum Beispiel sind zwei verschiedene Dinge. Es wird dazu geraten, Keine Namen (Variablen, Funktionen, etc.) zu verwenden, die mit einem Unterstrich beginnen, und nur aus Großbuchstaben bestehen (_FOOBAR
).
Lua verwendet bis auf den Doppelpunkt praktisch keine Zeichen zur Steuerung des Programmablaufs, jegliche Abläufe werden durch verschiedene Schlüsselwörter definiert.
Kommentare
Kommentare werden mittels --
eingeleitet, und gelten bis zum Ende der Zeile. Mehrzeilige Kommentare können mittels --[[ ... ]]--
umfasst werden.
-- Ich bin ein Kommentar!
… bzw …
--[[ Ich bin ein … … mehrzeiliger … … Kommentar! ]]--
Typen
Bei Lua handelt es sich um eine dynamisch typisierte Sprache, das Bedeutet, dass der Typ einer Variable über dessen Wert bestimmt wird, und nicht vordefiniert werden kann, welchen Wert eine Variable annehmen soll. Insgesamt besitzt Lua lediglich 8 Datentypen. …
string
-> Zeichenketten mit bis zu 264-1 Zeichennumber
-> Positive und Negative Integer, Fließkommazahlen, und Dezimalzahlen mit 64 Bit Längetable
-> Der einzige Datenstrukturiermechanismus in Lua, siehe Abschnitt Tablesfunction
-> In sich geschlossener Chunk mit Code, der „als ganzes“ ausgeführt werden kannnil
-> Zur Unterscheidung von allen anderen Datentypen (kein Wert, aber nicht leer)boolean
-> Die Wahrheitswertetrue
undfalse
userdata
-> Ein Block beliebiger roher C-Speicherdaten, der nicht durch Lua verändert werden kannthread
-> Repräsentationen von Co-Routinen (kollaboratives Multithreading), nicht Betriebssystemthreads
Variablen
Alle Datentypen in Lua können in Variablen gespeichert werden, durch Funktionen zurückgegeben werden, in Tables strukturiert werden, oder sonstwie innerhalb eines Sripts benutzt werden. Variablen können mittels ..
verkettet werden.
Variablen sind standardmäßig global. Mittels des Keywords local
kann man sie auf den Chunk beschränken, in dem sie definiert sind.
bar = 'globale Variable' -- Global definiert local foo = 'lokale Variable' -- Lokal definiert -- In diesem Beispiel hier macht es keinen Unterschied: Beide Variablen werden ausgegeben. print(foo..'\n'..bar)
lokale Variable globale Variable
Variablen können nach der initialen Definition jederzeit mittels variablenname = 'neuer Wert'
mit neuen Werten belegt werden, ihren Scope (lokal oder global) behalten sie dabei bei. Der Typ der Variable ändert sich je nach dem, was der Variablen als Wert zugewiesen wurde. mittels type()
kann man sich den Typen einer Variable ausgeben lassen.
local foobar = 6 -- Die Variable wird lokal mit einer Zahl definiert print(type(foobar)) -- Der Typ wird ausgegeben foobar = 'Hallo' -- Der Variablen wird ein String als neuer Wert zugewiesen print(type(foobar)) -- Es wird erneut der Typ ausgegeben
number string
Es wird empfohlen, wenn möglich lokale Variablen zu benutzen. In einem Chunk definierte Variablen sind in Chunks die innerhalb dieses Chunks erstellt werden ebenfalls verfügbar.
Funktionen
Eine Funktion ist ein einer Variablen zugewiesener Chunk, der über den Variablennamen aufrufbar ist. In neueren Versionen von Lua gibt es „syntaktischen Zucker“, der die Funktionsdefinition hinter dem Schlüsselwort function
versteckt.
function sag_was (text) print(text) end local sag_was_anderes = function (text) print(text) end sag_was('Hallo') sag_was_anderes('Tschüß')
Hallo Tschüß
Die beiden Definitionen sind technisch identisch. Beide definieren eine aufrufbare Funktion.