Herunterladen Inhalt Inhalt Diese Seite drucken
Inhaltsverzeichnis

Werbung

KAPITEL 17. SCHNELLEINSTIEG IN LUA
ist es: "\000\001\002\003".
17.2.4.7
nil
nil ist ein spezieller Typ in Lua und bezeichnet einen undefinierten Wert. Jede
Variable besitzt einen nil Wert solange ihr kein Wert zugewiesen wird.
1
p r i n t ( x )
> n i l
Aber mehr noch: Lua verwendet nil wenn eine Variable nicht weiter verwen-
det wird. Indem Sie einer Variable den Wert nil zuweisen wird diese von Lua
automatisch entfernt bzw. gelöscht.
17.2.5

Tabellen

Einer der mächtigsten Datentypen in Lua sind tables (Tabellen). Es handelt sich
dabei um assoziative Arrays, die - anders als echte Arrays - einen beliebigen,
auch nicht numerischen Schlüssel (key) zur Adressierung der einzelnen Werte
(value) verwenden. Mehr noch: Da Funktionen in Lua ebenfalls einen norma-
len Datentyp darstellen, können Tabellen zur Implementierung eines Objekt
orientierten Verhaltens verwendet werden. Dies ist allerdings nicht Teil dieser
Anleitung.
Die Größe der Tabellen ist nicht festgelegt oder beschränkt und wächst mit
dem Hinzufügen neuer Einträge. Wenn Sie eine Tabelle nicht länger benötigen
können Sie sie einfach per Zuweisung von nil aus dem Speicher entfernen.
Starten wir mit einigen Beispielen die etwas mehr Licht in das Verständnis von
Tabellen bringen sollten. Als erstes definieren wir eine einfache Liste mit drei
Früchten:
1
f r u i t s = { " apple " , " banana " , " orange " }
2
p r i n t ( f r u i t s [ 2 ] )
Die Anweisung in Zeile 1 initialisiert eine Tabelle mit drei Einträgen. Das erste
Feld fruits[1] enthält den Text (oder Zeichensequenz) "apple", das zweite
fruits[2] "banana" und das dritte "orange". Beachten Sie, das in Lua Inde-
xe generell mit 1 starten und nicht mit 0 (wie z.B. in C).
In diesem Beispiel fungiert die Tabelle als eine einfache Liste. Sie können je-
derzeit neue Einträge hinzufügen mit:
f r u i t s [ # t +1 ] = " pear "
Die Anweisung in Zeile 3 verwendet Lua's internen Längen-Operator # (siehe
auch Abschnitt 17.2.9.5) um den letzten Eintrag in der Liste zu ermitteln. Al-
ternativ können Sie auch die Funktion table.insert(table,value) aus
dem table Modul benutzen.
1
t = { 1 , 2 , 3 , 4 , 5 }
2
t a b l e . i n s e r t ( t , 6 )
3
p r i n t ( " Count : " , # t )
Um einen Tabelleneintrag an beliebiger Position einzufügen ohne dazu bereits
vorhandene Einträge kompliziert verschieben zu müssen, können Sie die glei-
che Funktion mit einem zusätzlichen Position Parameter aufrufen.
table.insert(table,position,value).
1
t = { 1 , 2 , 3 , 4 , 5 }
2
t a b l e . i n s e r t ( t , 4 , 44 )
3
p r i n t ( " Count : " , # t )
206
> banana
> 1 , 2 , 3 , 4 , 5 , 6
> Count : 6
> 1 , 2 , 3 , 44 , 4 , 5
> Count : 6

Werbung

Inhaltsverzeichnis
loading

Inhaltsverzeichnis