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