Funktionen im Table table
table.concat (table [, sep [, i [, j]]])
table.foreach (table, f)
table.foreachi (table, f)
table.getn (table)
table.sort (table [, comp])
table.insert (table, [pos,] value)
table.remove (table [, pos])
table.setn (table, n)
Verbindet die Werte eines tables mit ..
Parameter:
- Das table, dessen Werte verbunden werden sollen
- Ein string oder eine Zahl, die zwischen den Werten stehen soll. (Optional; Vorgabe ist ein leerer String)
- Ab wo die Werte verbunden werden sollen (Optional; Vorgabe ist 1)
- Bis wo die Werte Verbunden werden sollen. (Optional; Vorgabe ist die Größe des Tables)
Wir erinnern uns, strings und Zahlen können mit .. verbunden werden. ( "a" .. 5 --> "a5" )
Das gleiche macht diese Funktion mit den Werten eines numerischen tables.
Beispiele:
myTable = {
19,
"eisen",
10,
"guss",
}
ergebnis = table.concat(myTable)
print(ergebnis) --> 19eisen10guss
ergebnis = table.concat(myTable, " leer ")
print(ergebnis) --> 19 leer eisen leer 10 leer guss
ergebnis = table.concat(myTable, " leer ", 2)
print(ergebnis) --> eisen leer 10 leer guss
ergebnis = table.concat(myTable, " leer ", 2, 3)
print(ergebnis) --> eisen leer 10
Diese Funktion geht jeden Index des tables durch und übergibt ihn an die Funktion, die als zweiter Parameter steht.
Als Parameter ist folgendes zu übergeben:
- Das table, in dem jeder Wert durchgegangen werden soll
- Die Funktion, an den der Index übergeben werden soll
table.foreach (meinTable , MeineFunktion)
Beispiel:
meinTable = {}
meinTable.wert1 = true
meinTable.wert3 = 8
meinTable[1] = "Name1"
meinTable[7] = "Name7"
function DruckWas(_index)
print( _index, meinTable[_index] )
end
table.foreach( meinTable, DruckWas )

Diese Funktion ist analog zur vorhergehenden, aber sie geht nur numerische Indexe durch. Und zwar nur so lange, bis eine Reihenfolge unterbrochen wird.
Als Parameter ist folgendes zu übergeben:
- Das table, in dem jeder numerische Wert durchgegangen werden soll
- Die Funktion, an den der Index übergeben werden soll
table.foreachi (meinTable , MeineFunktion)
Beispiel:
meinTable = {}
meinTable.wert1 = true
meinTable.wert3 = 8
meinTable[1] = "Name1"
meinTable[7] = "Name7"
function DruckWas(_index)
print( _index, meinTable[_index] )
end
table.foreachi( meinTable, DruckWas )

Man sieht hier, dass die 7 nicht gedruckt wird. Und zwar weil 2 - 6 fehlen.
Diese Funktion platziert eine Variable an das Ende eines Tables. Wird die Position angegeben, so wird der Wert an diese Stelle platziert und die folgenden eins weiter geschoben. Es wird nichts zurückgegeben sondern das table direkt verändert
Als Parameter ist folgendes zu übergeben:
- Das table, in das die Variable hinein soll
- Optional die Position, an die es hinein soll
table.insert (meinTable , [position,] wert)
Beispiel:
meinTable = {}
table.insert (meinTable , 5)
resultat --> = meinTable[1] == 5
-- noch mal:
table.insert (meinTable , "Luna")
resultat --> = meinTable[1] == 5
meinTable[2] == "Luna"
-- noch mal:
table.insert (meinTable , 2, true)
resultat --> = meinTable[1] == 5
meinTable[2] == true
meinTable[3] == "Luna"
Diese Funktion gibt die Größe eines numerischen Tables zurück.
Als Parameter ist folgendes zu übergeben:
- Das table, dessen Größe wir wissen wollen
tableGroesse = table.getn(meinTable)
Beispiel:
myTable={ 1, 3, 6, "toll", false, { 8,9} )
tableGroesse = table.getn ( myTable ) --> tableGroesse == 6
tableGroesse = table.getn ( myTable[6] ) --> tableGroesse == 2
Diese Funktion streicht ein Element aus einem numerischen Table und lässt die anderen aufrücken wenn nötig.
Als Parameter ist folgendes zu übergeben:
- Das table, in dem wir ein Element löschen wollen
- Die Position an der das Element steht (optional)
geloeschtesElement = table.remove(meinTable[, pos])
Beispiel:
myTable = { 1, 3, 6, "toll", false, { 8,9} )
myTable[3] == 6
geloeschtesElement = table.remove(myTable, 3)
Daraus folgt -->
myTable[3] == "toll"
geloeschtesElement == 6
Diese Funktion ändert die größe eines numerischen tables.
Als Parameter ist folgendes zu übergeben:
- Das table, dessen Größe werden soll
- Die größe, die das Table nachher haben soll
table.setn (meinTable , 7)
Beispiel:
Oben, bei table.foreachi wurde nach der 1 nichts mehr gedruckt
meinTable = {}
meinTable.wert1 = true
meinTable.wert3 = 8
table.setn(meinTable,7)
meinTable[1] = "Name1"
meinTable[7] = "Name7"
function DruckWas(_index)
print( _index, meinTable[_index] )
end
table.foreachi( meinTable, DruckWas )

Wir sehen, dass jetzt die Werte bis 7 besetzt sind.
Selbstverständlich kann man das table auch verkleinern mit dieser Funktion. Dann sind alle größeren Werte weg

Sortiert ein numerisches table ( myTable[1] ... myTable[n] )
Parameter:
- Das table, das sortiert werden soll
- eine Funktion, die die Sortierfolge festlegt.
��ele:
myTable = {}
myTable[1] = 77
myTable[2] = 8
myTable[3] = 717
myTable[4] = 55
table.sort(myTable)
dann ist
myTable[1] --> 8
myTable[2] --> 55
myTable[3] --> 77
myTable[4] --> 717
____________________________________________________________________
oder
myTable = {}
myTable[1] = "z"
myTable[2] = "o"
myTable[3] = "f"
myTable[4] = "n"
table.sort(myTable)
dann ist
myTable[1] --> "f"
myTable[2] --> "n"
myTable[3] --> "o"
myTable[4] --> "z"
____________________________________________________________________
Alle Werte müssen vom gleichen Type sein. Sonst kommt ein Error: attempt to compare string with number
Ein table in dem die Indexe nicht numerisch sind kann direkt nicht sortiert werden. Um dies in einer Reihenfolge zu haben muss man die Indexe zuerst in ein numerisches table schreiben und anschließend dieses table dann sortieren.
Beispiel:
meinTable = {}
meinTable.Z = 89
meinTable.X = 8
meinTable.Y = 55
sortierTable = {}
for index in pairs(meinTable) do
table.insert(sortierTable, index)
end
sortierTable[1] --> Y
sortierTable[2] --> X
sortierTable[3] --> Z
jetzt kann das sortierTable sortiert werden
table.sort(sortierTable)
sortierTable[1] --> X
sortierTable[2] --> Y
sortierTable[3] --> Z
Die Sortierfunktion:
Als zweiten Parameter kann man eine Funktion übergeben, die die Sortierreihenfolge bestimmt.
Sie bekommt zwei Werte des Tables als Parameter. Dann muss sie bestimmen, welches der beiden zuerst kommt.
Soll der erste Wert vor dem zweiten liegen, so muss sie true zurückgeben. Andernfalls nichts oder false.
Beispiel:
myTable = {
10,
124,
10,
48,
}
function comp(w1,w2)
if w1 > w2 then
return true
end
end
table.sort(myTable,comp)
hiermit wird die Reihenfolge umgekehrt
myTable[1] --> 124
myTable[2] --> 48
myTable[3] --> 10
myTable[4] --> 10
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
Siehe auch: Haftungsausschluss
Copyright © Robert Schmitz 2006