In diesem speziellen Fall, wo Sie wissen, dass tempK
1
ist, wird tempI := 1
tun. Wenn die Idee darin besteht, tempI
zu initialisieren, sobald die in der Liste gespeicherten Werte vom Typ INTEGER
sind, gibt es mehrere Möglichkeiten. Eine davon ist ein Objekt-Test zu verwenden:
if attached {INTEGER} tempK as i then
tempI := i
end
jedoch in diesem Fall der Test für jedes Element durchgeführt wird, d.h. ineffizient. Änderung des Codes für den Listentyp vor der Schleife wird dazu beitragen, testen:
if attached {LINKED_LIST [INTEGER]} keys as integer_keys then
...
across
integer_keys as cursor
loop
tempI := cursor.item
end
...
end
Wenn der einzige Betrieb in der Schleife die Zuordnung ist, ist der entsprechende Code nur das letzte Element der Liste zu nehmen:
...
if not keys.is_empty and then attached {LINKED_LIST [INTEGER]} keys as integer_keys then
tempI := integer_keys.last
end
...
Anstelle der Spezialisierung könnte der Code auch verallgemeinert werden, um einen generischen Agenten zu übernehmen, dem der Schlüssel übergeben wird, und der Client liefert die Prozedur zur Handhabung des Schlüssels. Aber das könnte zu viel sein, abhängig davon, was der Zweck der Aufgabe ist, die Sie lösen.