Lua-Programmierung: Tables

Aus Wikibooks

Wechseln zu: Navigation, Suche

[Bearbeiten] Was sind in Lua Tables?

C-Programmierer kennen sicher sowohl Arrays als auch Strukturen. Arrays stellen ein Verband von vielen Variablen dar, die zusammengehören (z.B. die Lottozahlen). In derartigen Sprachen gibt es, wir erinnern uns, eine Typisierung, d.h. werden nur Arrays von Zahlen oder von Zeichen o.ä erstellt. Wenn man Variablen von verschieden Typen kombinieren will, braucht man dort Strukturen.

Nun denken sie vielleicht, dass es besser wäre, Strukturen in Lua einzufügen als Arrays - doch weit gefehlt! In Lua existiert nach wie vor nur ein Variablentyp, der alle Datentypen beinhalten kann.

Deswegen ist ein Array auch in Lua vorhanden und nennt sich dort Table.

[Bearbeiten] Deklaration und Definition von Tables

Ein Table ist genauso eine Variable wie andere auch also wird es gleich deklariert, es gelten wie immer die Namensregeln. Nur mit der Definition sieht es etwas anders aus:

 Tablename = { Werte durch Komma getrennt }

Die Elemente werden in Reihenfolge der Definition durch den Indexoperator []. Insofern besteht eine Ähnlichkeit zu C.

In den Indexoperator wird die Nummer des Elementes geschrieben welches angesprochen wird.

Folgende zwei Beispiele erzeugen dasselbe Table a:

 a = { 1, 4, "Hallo", 'du', -12, 12, 3.14 }
 a={}
 a[1]=1 a[2]=4 a[3]="Hallo" a[4]='du' a[5]=-12 a[6]=12 a[7]=3.14

Jetzt "tritt" ein Unterschied zu C auf. In Lua beginnt man bei Tables mit dem Element 1 nicht mit 0. Wenn 0 anspricht bekommt man nur ein nil zurück.

Wenn ein Table ausgeben will reicht es nicht

 a = { 1, 4, "Hallo", 'du', -12, 12, 3.14 }
 print(a)

zu schreiben. Man muss jedes Element einzeln ausgeben:

 a = { 1, 4, "Hallo", 'du', -12, 12, 3.14 }
 print( a[1]..a[2]..a[3]..a[4]..a[7])

Der #-Operator gibt die Anzahl der Elemente des Tables zurück:

 a = { 1, 4, "Hallo", 'du', -12, 12, 3.14 }
 print(#a)

Die Funktion table.insert fügt Elemente in Tables ein. Es gibt zwei Varianten. Bei der ersten gibt es zwei Parameter der erste ist ein Table und der zweite ein Wert. Es wird einfach hinten ein neues Element angehängt und der zweite Parameter zugewiesen. Bei der zweiten Variante gibt es drei Parameter, der erste das Table, der zweite die Position, der dritte ein Wert. An der Position wird ein neues Element angelegt und der Wert wird zugewiesen. Alle folgenden Elemente werden eine Stelle nach hinten verschoben.

Persönliche Werkzeuge