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

nach obentable.concat (table [, sep [, i [, j]]])

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


nach obentable.foreach

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 )







nach obentable.foreachi

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.



nach obentable.insert

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"


nach obentable.getn

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



nach obentable.remove

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)
Wird die Position nicht angegeben, wird das letzte Element gelöscht.

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


nach obentable.setn

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






nach obentable.sort (table [, comp])

Sortiert ein numerisches table ( myTable[1] ... myTable[n] )

Parameter:

  • Das table, das sortiert werden soll
  • eine Funktion, die die Sortierfolge festlegt.
Ist comp nicht angegeben, so wird entsprechend dem `<����������

��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