Tabellen und Listen
Lua-Tabellen sind Datensätze.1
Im Gegensatz zum gewohnten Tabellenbegriff sind sie keine Tabellen mit mehreren Zeilen und Spalten, sondern zweispaltige Tabellen mit Schlüssel und Wert.
Schlüssel | Wert |
name | Gödel |
Geburtsjahr | 1906 |
Todesjahr | 1978 |
Tabellen anlegen und füllen
Beispielprogramm table_1.lua
goedel = {} goedel.name = "Kurt Gödel" goedel.geburtsjahr = 1906 goedel.todesjahr = 1978 print( goedel ) print( goedel.name )
Das Ergebnis:
table: 00329E20 Kurt Gödel
- Felder können an eine Tabelle angehängt werden.
- Tabellenname und Feldname sind durch einen Punkt getrennt.
Beispielprogramm table_2.lua
goedel = { name = "Kurt Gödel", geburtsjahr = 1906, todesjahr = 1978, } print( goedel ) print( goedel.name )
Das Ergebnis:
table: 00329E20 Kurt Gödel
- Felder können beim Anlegen schon gefüllt werden.
- Komma nicht vergessen!
Beispielprogramm table_3.lua
goedel = {} goedel.name = "Kurt Goedel" goedel.geburtsjahr = 1906 goedel.todesjahr = 1978 goedel[1] = 'Über die Vollständigkeit der Axiome des logischen Funktionenkalküls.' goedel[2] = 'Diskussion zur Grundlegung der Mathematik, Erkenntnis' print( goedel ) print( goedel.name ) print( goedel[1] )
Das Ergebnis:
table: 00329E20 Kurt Goedel Über die Vollständigkeit der Axiome des logischen Funktionenkalküls.
- Als Schlüsselwerte sind auch Zahlen möglich.
- Zahlen als Schlüssel sind in eckigen Klammern.
- Dieser Mechanismus ermöglicht die Definition von Listen.
Beispielprogramm table_4.lua
goedel = {} goedel.name = "Kurt Gödel" print( goedel ) print( goedel.name ) print( goedel["name"] )
Das Ergebnis:
table: 00329E20 Kurt Gödel Kurt Gödel
- Statt der .Feldname-Methode kann auf Inhalte mit [feldname] erfolgen
- In den eckigen Klammern kann ein Ausdruck stehen (z.B. Variable mit dem Feldnamen)
Geschachtelte Tabellen
Tabellenwerte können wieder Tabellen sein.
Beispielprogramm table_5.lua
goedel = {} goedel.name = "Kurt Gödel" goedel.geburt = {} goedel.geburt.jahr = 1906 goedel.geburt.monat = 4 goedel.geburt.tag = 28 goedel.gestorben = {} goedel.gestorben.jahr = 1978 goedel.gestorben.monat = 1 goedel.gestorben.tag = 14 print( goedel ) print( goedel.name ) print( goedel.geburt ) print( goedel.geburt.jahr )
Das Ergebnis:
table: 00329E20 Kurt Gödel table: 00329FD0 1906
Tabellen durchlaufen
Die For-Schleife ermöglicht ein durchlaufen von Tabellen.
for schluessel, wert in pairs(table) do -- Block end
- schluessel enthält den Feldnamen, bzw. bei Listen die Position.
- wert enthält den Wert.
Beispielprogramm table_6.lua
personen = {} personen[1] = { name = "Kurt Gödel", geburtsjahr = 1906, todesjahr = 1978, } personen[2] = { name = "Maurits Cornelis Escher", geburtsjahr = 1898 , todesjahr = 1972, } for variable, person in pairs(personen) do print( variable, person.name ) end
Das Ergebnis:
1 Kurt Gödel 2 Maurits Cornelis Escher
Eine Alternative Syntax ist:
for schluessel, wert in next, table do -- Block end
Beispielprogramm table_6.lua
personen = {} personen[1] = { name = "Kurt Gödel", geburtsjahr = 1906, todesjahr = 1978, } personen[2] = { name = "Maurits Cornelis Escher", geburtsjahr = 1898 , todesjahr = 1972, } for variable, person in pairs(personen) do print( variable, person.name ) end
Das Ergebnis:
1 Kurt Gödel 2 Maurits Cornelis Escher