Lua Logo
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)

for generisch

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.
Die Vervielfältigung der auf diesen Seiten enthaltenen Informationen und Grafiken ist untersagt, ausgenommen davon ist sämtlicher auf diesen Seiten angezeigter Quellcode.
Siehe auch: Haftungsausschluss
Copyright © Robert Schmitz 2006