Herunterladen Inhalt Inhalt Diese Seite drucken

IFTOOLS MSB-RS485-PLUS Handbuch Seite 221

Inhaltsverzeichnis

Werbung

1
f r u i t s = {
2
[ 2 ] = " apple " ,
3
[ 3 ] = " banana " ,
4
[ 4 ] = " orange " ,
5
[ 5 ] = " pear " ,
6
}
7
f o r i =0 ,# f r u i t s do
8
p r i n t ( f r u i t s [ i ] )
9
end
Der erste Index in einer ein-dimensionalen (numerischen) Tabelle ist standard-
mäßig immer 1 solange Sie nicht explizit mit 0 beginnen (wie zuvor gezeigt).
Hier startet der Index allerdings mit 2 und Index 1 ist somit nil. Der Längen
Operator # liefert deshalb die Länge 0 und print in Zeile 8 wird niemals auf-
gerufen.
Lua bietet zum Durchlaufen von Tabellen zwei Iteratoren ipairs und pairs.
Beide werden mit einer Tabelle als Argument aufgerufen und kehren jedes Mal
mit dem nächsten key/value (Schlüssel/Werte) Paar zurück (daher der Name).
ipairs wird hauptsächlich bei numerischen Tabellen verwendet und stoppt
automatisch beim ersten Index/Schlüssel der keiner Zahl oder nil entspricht.
Mit ipairs können wir unser erstes Beispiel wie folgt umschreiben:
1
f r u i t s = { " apple " , " banana " , " orange " , " pear " }
f o r i , v i n i p a i r s ( f r u i t s ) do
2
3
p r i n t ( i , v )
end
4
Zeile 2 ruft den Iterator auf und speichert das Ergebnis in den Variablen i (Index
oder Schlüssel) und v (Wert). Der Iterator stoppt sobald er auf einen nil Wert
trifft oder das Tabellenende erreicht. Zeile 3 gibt beim Durchlauf jeweils das
neue key/value Ergebnis aus:
1
apple
2
banana
3
orange
4
pear
Weitaus interessanter ist der zweite Iterator pairs. Er ist speziell zur Anwen-
dung mit assoziativen Tabellen gedacht und damit besonders für Tabellen mit
'Löchern' geeignet. Er funktioniert aber auch bei einfachen Tabellen mit nume-
rischem Index.
1
f r u i t s = {
2
[ 2 ] = " apple " ,
3
[ 3 ] = " banana " ,
4
[ 4 ] = " orange " ,
5
[ 5 ] = " pear " ,
6
}
7
f o r i , v = p a i r s ( f r u i t s ) do
8
p r i n t ( i , v )
9
end
Das Result ist:
3
banana
2
apple
4
orange
5
pear
> !
17.2. DIE LUA SPRACHE
209

Werbung

Inhaltsverzeichnis
loading

Inhaltsverzeichnis