Hier sollte noch ein einleitender Text hin!
Funktion | Syntax | Beschreibung |
---|---|---|
concat | table.concat(table [, _sep [, _i [, _j]]]) | Verbindet die Elemente einer Tabelle [von _i bis _j] miteinander zu einem String [mit Seperator _sep] |
foreach | table.foreach(_table, _f) | Wendet nacheinander die Funktion _f auf jedes Element der Tabelle _table an und übergibt dabei bei jedem Durchlauf das jeweilige Schlüssel-Wert Paar |
foreachi | table.foreachi(_table, _f) | Wie foreach nur das hier das jeweilige Index-Wert Paar an die Funktion _f übergeben wird |
getn | table.getn(_table) | Gibt die Anzahl der Elemente einer Tabelle _table zurück |
insert | table.insert(_table, [_pos,] _value) | Fügt einen Wert _value in eine Tabelle _table ein. Wenn eine Position _pos angegeben wird, wird der Wert vor dem sich aktuell an der Position befindlichen Wert eingefügt |
remove | table.remove(_table [, _pos]) | Entfernt ein Element aus einer Tabelle _table. Wenn eine Position _pos angegeben wird, wird das Element, welches sich aktuell an der Position befindet entfernt, ansonsten das jeweils letzte Element. Die Funktion liefert das entfernte Element zurück. Nach dem Entfernen eines Elements wird die Tabelle sequenziell neu indexiert und die Tabellen-Größe (siehe table.getn) wird aktualisiert |
setn | table.setn(_table, _n) | Setzt die Größe einer Tabelle _table explizit auf die Größe _n. Enthält die Tabelle einen Wert n, so wird dieser aktualisiert |
sort | table.sort(_table [, _comp]) | Sortiert eine Tabelle _table. Die Standardsortierung, wenn keine Sortier-Funktion _comp angegeben wird, erfolgt aufsteigend (a < b) |
Hier sollte zu jeder Table-Funktion mind. 1 Beispiel hin. Zusätzlich sollten die Funktionen nochmals ausführlich dokumentiert werden. Es wäre auch gut, wenn die Beispiele konkret auf DEdK bezogen werden!
table.concat(_table [, _sep [, _i [, _j]]])
table.concat({ 1, 2, "drei", 4, "fuenf" })
12drei4fuenf
table.concat({ 1, 2, "drei", 4, "fuenf" }, ", ")
1, 2, drei, 4, fuenf
table.concat({ 1, 2, "drei", 4, "fuenf" }, ", ", 2)
2, drei, 4, fuenf
table.concat({ 1, 2, "drei", 4, "fuenf" }, ", ", 2, 4)
2, drei, 4
Jedes Element der Tabelle muss in einen String umwandelbar sein! Deshalb lassen sich auch keine Tables miteinander verbinden, da diese nicht in einen String umwandelbar sind.
table.foreach(_table, _f)
Folgende Tabelle sei gegeben:
_table={"eins", zwei="drei", "vier", "zwei", fuenf="fuenf"}
table.foreach(_table, Message)
1 2 3 fuenf zwei
Hier werden die Schlüssel-/Indexwerte ausgegeben, nicht aber der eigentliche Wert. Beachte die „automatische“ Sortierung: (Index) Zahlenwerte (x < y), (Schlüssel) Stringwerte (a < b)
table.foreach(_table, function(k,v) Message("Key: "..k.." Value: "..v) end)
Key: 1 Value: eins Key: 2 Value: vier Key: 3 Value: zwei Key: fuenf Value: fuenf Key: zwei Value: drei
Hier werden sowohl die Schlüssel-/Indexwerte, als auch die Werte selbst ausgegeben. Die Funktion foreach übergibt immer das Wertepaar aus Index + Wert, bzw. aus Schlüssel + Wert im Gegensatz zu der Funktion foreachi, die nur die Index-Wert Paare übergibt, nicht aber die Schlüssel-Wert Paare (siehe auch foreachi)
table.foreach(Diplomacy, function(k,v) Message("Key: "..k.." Value: "..v) end)
Key: Neutral Value: 2 Key: Friendly Value: 1 Key: Hostile Value: 3
Die Funktion eignet sich während des Scriptens auch gut dafür, um Tables auszulesen.
table.foreachi(_table, _f)
Folgende Tabelle sei gegeben:
_table={"eins", zwei="drei", "vier", "zwei", fuenf="fuenf"}
table.foreachi(_table, function(k,v) Message("Key: "..k.." Value: "..v) end)
Key: 1 Value: eins Key: 2 Value: vier Key: 3 Value: zwei
Beachte dass hier im Gegensatz zu der Funktion foreach nur die Index-Wert Paare ausgegeben werden (siehe auch foreach).
table.getn(_table)
Folgende Tabelle sei gegeben:
_table={"eins", "zwei", "drei"}
Message(table.getn(_table))
3
Wenn kein Wert für n in der Tabelle vorhanden ist und auch kein nil-Wert, zählt die Funktion die Anzahl der Elemente.
Folgende Tabelle sei gegeben:
_table={"eins", "zwei", "drei"; n=5}
Message(table.getn(_table))
5
Ist ein Wert für n in der Tabelle vorhanden, so übersteuert dieser den Zählwert der Funktion.
table.setn(_table, 10) Message(table.getn(_table))
10
Der Wert für n kann auch mit Hilfe der Funktion table.setn gesetzt werden.
Folgende Tabelle sei gegeben:
_table={"eins", "zwei", nil, "vier"}
Message(table.getn(_table))
2
Die Zählfunktion bricht ab, sobald sie auf einen nil-Wert trifft.
table.insert(_table, [_pos,] _value)
Folgende Tabelle sei gegeben:
_table={1, 2, "vier"}
table.insert(_table, "drei") table.foreach(_table, function(k,v) Message("Key: "..k.." Value: "..v) end)
Key: 1 Value: 1 Key: 2 Value: 2 Key: 3 Value: vier Key: 4 Value: drei
Ohne eine Angabe der Position _pos wird der neue Wert am Ende der Tabelle eingefügt.
table.insert(_table, 3, "drei") table.foreach(_table, function(k,v) Message("Key: "..k.." Value: "..v) end)
Key: 1 Value: 1 Key: 2 Value: 2 Key: 3 Value: drei Key: 4 Value: vier
Wenn eine Position _pos angegeben wird, wird der Wert vor dem sich aktuell an der Position befindlichen Wert eingefügt.
Folgende Tabelle sei gegeben:
_table={1, 2, "vier"; n=10}
table.insert(_table, "drei") table.foreach(_table, function(k,v) Message("Key: "..k.." Value: "..v) end)
Key: 1 Value: 1 Key: 2 Value: 2 Key: 3 Value: vier Key: 11 Value: drei Key: n Value: 11
Wenn die Tabelle einen Wert n besitzt, und ein Wert am Ende eingefügt (eigentlich angehängt) wird, erhält er auch den entsprechenden Indexwert. Bei den dazwischenliegenden Elementen handelt es sich um nil-Werte (siehe auch getn).
table.remove(_table, [_pos])
Folgende Tabelle sei gegeben:
_table={1, 2, "vier", "drei"}
Message(table.remove(_table))
drei
Ohne eine Angabe der Position _pos wird das jeweils letzte Element der Tabelle gelöscht und von der Funktion zurückgegeben.
Message(table.remove(_table, 3))
vier
Wenn eine Position _pos angegeben wird, wird das Element, welches sich an der Stelle der Tabelle befindet gelöscht und von der Funktion zurückgegeben.
Folgende Tabelle sei gegeben:
_table={1, 2, "vier", "drei"; n=10}
Message(table.getn(_table)) Message(table.remove(_table)) Message(table.getn(_table))
10 9
Da die Tabelle durch n=10 eine Länge von 10 hat, wobei die Elemente von Indexwert 5 bis 10 nil-Werte sind, liefert die Funktion beim Löschen des letzten Elementes auch nil zurück. Die Größe der Tabelle verringert sich aber auf 9.
Message(table.getn(_table)) Message(table.remove(_table, 3)) Message(table.getn(_table))
10 vier 9
for i=1,table.getn(_table) do table.remove(_table) end
oder rückwärts:
for i=table.getn(_table),1,-1 do table.remove(_table) end
Aufpassen muss man dagegen, wenn man indizierte Elemente löschen möchte und dazu die Variable der Schleifen-Funktion benutzt! Dann kann man nur die Rückwärts-Schleife verwenden!
Beispiel einfügen!