Die Kontrollstrukturen in Lua sind im Wesentlichen die gleichen wie bei anderen gängigen Programmiersprachen. Es gibt If-Abfragen, die mehrere Elseif- und einen Else-Block enthalten können. Ein While-Statement prüft immer wieder zu Beginn eine Bedingung und arbeitet den Block ab, solange sie erfüllt ist. Ein Repeat-Block funktioniert umgekehrt und läuft solange, bis die Bedingung nicht mehr erfüllt ist, die am Ende des Blocks steht.
For-Schleifen können sich über Zahlenbereiche erstrecken oder über eine Iterator-Funktion, die man beispielsweise aus einem Array erzeugt. Dafür gibt es spezielle Funktionen wie »pairs
«
oder »ipairs
«
. Der folgende Code iteriert mit einer For-Schleife über ein Array:
tbl = {"a", "b", "c"} for key, value in ipairs(tbl) do print(key, value) end
Eine numerische For-Schleife erstreckt sich über einen Zahlenbereich, wahlweise mit oder ohne Schrittweite: »for i = 1, 5
«
geht jede ganze Zahl zwischen 1 und 5 durch, während »for i = 1, 10, 2
«
in Zweierschritten voranschreitet.
Ein Break-Statement bricht den Ablauf der erwähnten Schleifen ab und fährt danach mit der Bearbeitung fort. Ein Continue-Statement, das es in anderen Programmiersprachen gibt und ans Ende einer Schleife springt, aber dann fortfährt, fehlt seltsamerweise. Man muss es etwas umständlich mit einem Goto simulieren:
for i = 1, 10 do if i % 2 == 0 then goto continue end print(i) ::continue:: end
Eine Goto-Sprungmarke wird, wie hier zu sehen, durch zwei doppelte Doppelpunkte eingeschlossen. Um die Continue-Anweisung zu simulieren, setzt man sie direkt vor das Schleifenende.
Damit sind die wichtigsten Sprach-Features von Lua erklärt, mit denen es sich schon ganz gut leben lässt. Zum Weiterlesen und zum schnellen Nachschlagen von Syntax und Funktionen bietet sich die Sprachreferenz an [6].
Weil eine Programmiersprache ohne ein gesundes Ökosystem wenig wert ist, gibt es das Modul-Repository Luarocks [7]. Es ist im Handumdrehen aus dem Quellcode installiert, aber auch in den meisten Linux-Distributionen enthalten. Ein Aufruf von »luarocks search Begriff
«
sucht in den Paketquellen, »luarocks install Paket
«
installiert es lokal. Root-Rechte sind nötig, wenn der Speicherort für die Pakete nur für den Superuser beschreibbar ist. Tabelle 2 zeigt eine Auswahl nützlicher Erweiterungen, die im Luarocks-Verzeichnis zu finden sind.
Tabelle 2
Luarocks
Modul | Funktion |
---|---|
AesFileEncrypt |
AES-Verschlüsselung |
Flu |
Modul für das » |
Inotify |
API für Inotify |
JSON4Lua |
JSON-Modul |
lapis |
Web-Framework für MoonScript und Lua |
lbase64 |
Base64-Modul |
lposix |
POSIX-Bibliothek (inklusive Curses) |
lsocket |
Unix-Sockets |
lsqlite3 |
Anbindung an SQLite-Datenbank |
lua-csnappy |
Unterstützung für Googles Snappy-Komprimierung |
lua-ev |
Modul für Linux-Libev |
lua-gnuplot |
Diagramme mit Gnuplot |
lua-inih |
Parser für Ini-Dateien |
lua-websockets |
Websockets für Lua |
LuaCrypto |
Lua-Frontend für OpenSSL |
luadaemon |
Macht aus Lua-Programmen Unix-Daemons |
luadbi-mysql |
Datenbankabstraktion für MySQL |
luadbi-postgresql |
Datenbankabstraktion für PostgreSQL |
luadns |
DNS |
LuaFileSystem |
Module für Dateisystemzugriff |
lualogging |
Logging-API |
lzlib |
ZLib-Komprimierung (Gzip) |
MD5 |
MD5-Hashes |
Leider sind nicht alle Lua-Bibliotheken in Luarocks zu finden. So gibt es beispielsweise noch Module für LDAP und so moderne Dinge wie die Libguestfs und die Konfigurations-API Augeas. Für Linux-Anwender empfiehlt sich auf jeden Fall, einmal das distributionseigene Repository nach dem Schlüsselwort »lua
«
zu durchsuchen.
Dank der großen Verbreitung von Lua herrscht an Tools zur Programmierung kein Mangel. Wer zur Entwicklung andere Programme als Vi oder Emacs verwenden will, kann auf eine Reihe von grafischen Entwicklungsumgebungen zurückgreifen, zum Beispiel Zerobrane (Abbildung 2), das es für Linux, Windows und OS X gibt und soviel kostet, wie man zu zahlen bereit ist [8]. Auch für die großen Java-IDEs wie Eclipse, Netbeans und IntelliJ gibt es Lua-Plugins. Zerobrane ist auf jeden Fall einen Versuch wert. Die Website bietet zahlreiche Tutorials, beispielsweise zum Debuggen von Wireshark-Skripts [9].
Als Blick über den Tellerrand hinaus ist die Codea-IDE [10] interessant, die eine Lua-Entwicklungsumgebung auf dem iPad implementiert (Abbildung 3). Sehenswert ist allemal das Video auf der Codea-Seite, das zeigt, wie eine Entwicklungsumgebung aussehen kann, die je nach Datentyp den Programmierer bei der Eingabe etwa mit Farb- und Dateiauswahl unterstützt.
Infos