7
i = i + 1
8
r e t u r n a [ i ] , t [ a [ i ] ]
9
end
10
end
11
12
f o r i , v i n s o r t e d P a i r s ( f r u i t s ) do
13
p r i n t ( i , v )
14
end
Der entscheidende Code liegt in den Zeilen 5...9.
sortedPair gibt selbst kein Schlüssel/Wert Paar zurück. Vielmehr delegiert
es diese Aufgabe an eine anonyme Funktion
Paar als Resultat liefert.
Funktionen dieser Art werden auch Factory Funktionen genannt.
Wenn wir sortedPair das erste mal in der for Schleife in Zeile 12 aufrufen,
sortiert diese die Indexe der übergebenen Tabelle t in einer neuen Tabelle a.
Außerdem initialisiert sie einen lokalen index Zähler i mit 0. Der Zähler ist von
außen nicht zugänglich da als lokal spezifiziert, wird von Lua aber im Speicher
gehalten, da die anonyme Funktion auf diesen zugreift.
In Zeile 6 liefert sortedPair schließlich die eigentliche (anonyme) Iterator
Funktion, die die sortierten Indexe in Tabelle a zur Rückgabe der Schlüs-
sel/Werte Paare verwendet.
Mit anderen Worten: sortedPair 'fabriziert' eine neue Iterator Funktion in-
klusive der nötigen Variablen und Initialisierungen. Daher der Name 'Factory'
Funktion.
In der for Schleife in Zeile 12 bewirkt daher jeder Aufruf von sortedPair
letztendlich den Aufruf der anonymen Funktion in Zeile 6. Letztere 'merkt' sich
den zuletzt benutzten Index im Zähler i um bei erneutem Aufruf das nächste
Schlüssel/Wert Paar liefern zu können.
17.2.6
Bezeichner
Ein Bezeichner (Identifier) ist in Computer Sprachen ein Name, der sich auf et-
was anderes bezieht, z.B. eine Variable oder eine Funktion. Einige Bezeichner
werden von Lua für interne Zwecke reserviert, die sogenannten Schlüsselworte
(keywords). Wir kennen bereits die booleschen Werte true und false). Andere
sind die fest eingebauten Funktionen wie z.B. print.
Die Regeln für zulässige Bezeichner oder Namen entsprechen denen anderer
Sprachen. Ein Bezeichner kann in Lua aus einer beliebigen Folge aus Buch-
staben, Zahlen und Unterstrichen bestehen, wobei der Name nicht mit einer
Zahl beginnen darf
Gültige Bezeichner oder Variablennamen sind:
x
y
aVeryLongVariableName
Ungültige Bezeichner führen zu einem Fehler
7
sf Eine anonyme Funktion ist eine Funktion ohne Namen.
8
Die Analyser Software und Lua selbst verwenden Namen beginnend mit einem _ für interne
Zwecke. Wir empfehlen deshalb generell bei Variablen ein _ als erstes Zeichen zu vermeiden.
8
.
ABC
17.2. DIE LUA SPRACHE
7
in Zeile 6 welche das nächste
t1
_nm
the_last_result
211