for - Schleife (generische Form)
Mit der numerischen Form konnten wir alle tables in der Art:
myTable[nummer] durchgehen.
Mit dieser Art von for - Schleife können wir aber solche tables nicht durchgehen:
myTable.meinName
Genau das kann aber die generische Form der for - Schleife.
for variable, wert in pairs(table) do -- die Funktion pairs ist seit Lua 5.1 vorgeschrieben
-- Block
end
Anmerkung:
Die Funktion pairs(table) hat als Rückgaben zuerst die Funktion next und dann das table.
Sodass man auch schreiben könnte:
for variable, wert in next,table do
-- Block
end
Diese Schleife geht, ungeachtet ob es sich um ein numerisches table oder ein table mit Namen handelt, jedes Teil des tables durch.
Beispiel: Wir erzeugen ein table mit den Wochentagen
tage = {"Sonntag", "Montag", "Dienstag","Mittwoch",
"Donnerstag", "Freitag", "Samstag"}
Jetzt liegt ein table in dieser Form vor:
tage[1] = "Sonntag"
tage[2] = "Montag"
tage[3] = "Dienstag"
tage[4] = "Mittwoch"
tage[5] = "Donnerstag"
tage[6] = "Freitag"
tage[7] = "Samstag"
tage ist ein numerisches table
Wir machen eine generische Schleife. Dazu müssen wir nicht wissen, wie groß das table ist. Es wird ja jedes Element durchgegangen.
tagesZahlen = {} -- neues table
for variable, wert in pairs(tage) do
tagesZahlen[wert] = variable
end
Was geschieht:
- wir machen ein leeres table (tagesZahlen)
- jetzt geht die Schleife jeden Teil des Tables tage durch
- in der Variablen variable steht jedes Mal womit wir diesen Teil ansprechen können. In unserem Fall ist das jetzt die Zahl [1...7]
- in der Variablen wert steht jedes mal der Inhalt den Tables mit der entsprechenden Nummer [Sonntag ... Samstag]
- im Block erzeugen wir dann jeweils ein Teil des Tables tagesZahlen in der Form:
tagesZahlen.Sonntag = 1
.....
tagesZahlen.Samstag = 7
Jetzt prüfen wir das im Editor (wir glauben ja nicht alles)

Durch die Schleife:
for i,v in pairs(tage) do
tagesZahlen[v] = i
end
haben wir gesehen, dass es noch eine andere Form gibt ein table mit Namen zu erzeugen
tagesZahlen.Sonntag = 1 -- kennen wir
tagesZahlen["Sonntag"] = 1 -- haben wir jetzt kennen gelernt
tagesZahlen = {Sonntag = 1} -- geht genau so
Sehr vielseitig. Nicht wahr? Immer so nutzen, wie wir es gerade brauchen können.

