KAPITEL 17. SCHNELLEINSTIEG IN LUA
wobei TO optional ist und per Voreinstellung den Index des letzten Zeichens
enthält.
Zeile 1 liefert den Teilstring von Position 7 (dem 'w') bis zum Stringende (default).
Erinnern Sie sich, das Lua Indexe mit 1 starten.
Zeile 2 resultiert in den ersten 5 Zeichen des Strings (1 bis 5).
In Zeile 3 wird der Anfang des Teilstrings von hinten indiziert. -1 ist gleichbe-
deutend mit dem letzten Zeichen, -6 ist 'w' vom Ende gezählt. Auch hier ist der
zweite Index per Voreinstellung das Stringende.
Zeile 4 verwendet einen Objekt orientierten Aufruf und begrenzt das Resultat
mit dem zweiten Index -2 auf das vorletzte Zeichen.
17.1.4
Datenstrukturen in Lua
Feldbus Protokoll Spezifikationen enthalten oft nummerische Konstanten um
Kommandos, Fehler Codes oder Statusmeldungen als Zahlenkombination zu
übertragen. Dabei wird einem bestimmten Wert (Schlüssel) eine eindeutige
Bedeutung bzw. Beschreibung (Wert) zugewiesen. Z.B. einem Fehlercode eine
Fehlerbeschreibung. Oder einem Digitaleingang ein Wert OFF oder ON. In der
Informatik spricht hier auch von key/value Paaren.
Um den zugeordneten Text (Wert) einer Zahl (Schlüssel) zu ermitteln kann man
eine Lua Funktion wie folgt verwenden:
1
function G e t D i g i t S t a t e T e x t ( s t a t e )
2
i f s t a t e == 0 then
3
r e t u r n "OFF"
4
e l s e i f s t a t e == 1 then
5
r e t u r n "ON"
6
end
7
r e t u r n " "
8
end
Dies mag für eine geringe Anzahl von Varianten noch funktionieren. Bei einer
großen Anzahl von if...elseif Abfragen wird der Code aber sehr schnell
unleserlich und Fehler anfällig.
Die meisten Programmiersprachen bieten zur Speicherung von Schlüssel/Wert
Paaren sogenannte Assoziative Arrays. Dabei dient der Schlüssel als eindeu-
tiger Index für den zugewiesenen Wert. Der Schlüssel kann eine einfache Zahl
sein (ein Fehlercode) aber auch ein beliebiger Sting. Bei letzterem wird aus
dem String eine eindeutige Zahl, der sogenannte Hash Wert gebildet, der dann
als Index fungiert.
Lua bietet mit den sogenannten table eine eigene und sehr mächtige Im-
plementierung eines assoziativen Arrays. table sind zudem der einzige und
wichtigste Datenstruktur Mechanismus in Lua. Sie können eine table verwen-
den um gewöhnliche Arrays nachzubilden (auch solche mit einer Indizierung
ab 0), sowie Stacks, Queues, Funktionen und Symboltabellen und vieles mehr.
Selbst Lua Module sind als table organisiert.
Wenn wir die Funktion string.dump aufrufen bedeutet es nichts anderes als
das Lua die Funktion mit dem Index (Hash Wert) dump in der string Modul Ta-
belle ausführt.
Weitere Informationen zu table finden Sie auf Seite 206. Wir wollen uns hier
zunächst auf die grundsätzlichen Funktionen konzentrieren und betrachten Ta-
198