Ein Element an einer bestimmten Position entfernen Sie mit:
table.remove(table,position).
1
t = { 1 , 2 , 3 , 4 , 5 }
2
t a b l e . remove ( t , 4 )
3
p r i n t ( " Count : " , # t )
Sie können jederzeit ein bestimmtes Element in der Tabelle oder Liste durch
einen neuen Wert ersetzen. Jedes Tabelleneintrag ist durch den Index-Operator
[] referenzierbar. Um den zweiten Eintrag mit 200 zu überschreiben reicht z.B.
ein einfaches: t[2]=200.
Entsprechend einfach ist die Abfrage beliebiger Einträge, in unserem Beispiel
v=t[2] enthält v den Wert des zweiten Feldes. Ist das Feld nicht vorhanden
wird nil zurück gegeben. Konsequenter Weise führt jede Zuweisung an ein
nicht existierendes Feld zur Anlegung desselben.
Die bisherigen Tabellen Beispiele verwendeten Zahlenindexe und übergaben
lediglich die Werte. Dies entspricht der Standardvorgabe von Lua. Wie oben
erwähnt können Sie allerdings auch beliebige andere Datentypen als Index
(key) und Werte verwenden. Stellen Sie sich einen Datentyp vor, der einen
Punkt in einem Koordinatensystem repräsentiert:
1
p o i n t = { x = 5 , y = 10 }
2
p r i n t ( p o i n t . x , p o i n t . y )
Hier wird eine Tabelle zur Speicherung der beiden Koordinaten x und y benutzt.
Diese Art Beziehung zwischen Schlüssel (x oder y) und Wert (der eignetliche
Koordinatenwert) in einem Array wird auch Dictionary genannt.
17.2.5.1
Diskontinuierliche Tabellen mit Löchern
Betrachten Sie dazu folgendes Beispiel:
1
errorCodes = {
2
[ 1 ] = " General e r r o r " ,
3
[ 2 ] = " I n v a l i d command " ,
4
[ 3 ] = " I n v a l i d function " ,
5
[ 7 ] = " Wrong checksum " ,
6
[ 11 ] = " Timeout "
7
}
8
p r i n t ( # errorCodes )
Was passiert hier?
Lua initialisiert alle nicht verwendeten Tabellen Indexe mit nil. Bei nicht kontinu-
ierlichen Tabellen wertet Lua den ersten ungültigen Index (nil) als Tabellenen-
de. In unserem Beispiel ist der Index 4 nil weil kein entsprechender Tabellen-
eintrag vorhanden ist. Dies gilt auch für die Index 5...10. # stoppt deshalb bei
Index 4 und das Ergebnis ist 3.
Eine ähnliche Situation liegt vor, wenn Sie eine Tabelle als 'Dictionary' verwen-
den und der Schlüssel (Index) aus Strings anstelle von Zahlen besteht.
1
t r a n s l a t i o n s = {
2
[ " apple " ] = " A p f e l " ,
3
[ " banana " ] = " Banane " ,
4
[ " orange " ] = " Orange " ,
5
[ " pear " ] = " B i r n e "
> 1 , 2 , 3 , 5
> Count : 4
> 5
10
> 3 ! ! !
17.2. DIE LUA SPRACHE
207