Iterator¶
An iterator can be obtained from List:ITERATOR
. Once a List
has given you an Iterator
object, you can use it to access elements inside the List
. An ITERATOR is a generic computer programming concept. In the general case it’s a variable type that allows you to get the value at a position in some collection, as well as increment to the next item in the collection in order to operate on all objects in the collection one at a time. In kOS it operates on Lists
.
A loop using an Iterator
on a List
might look like this:
// Starting with a list that was built like this
SET MyList To LIST( "Hello", "Aloha", "Bonjour").
// It could be looped over like this
SET MyCurrent TO MyList:ITERATOR.
MyCurrent:RESET().
PRINT "After reset, position = " + MyCurrent:INDEX.
UNTIL NOT MyCurrent:NEXT {
PRINT "Item at position " + MyIter:INDEX + " is [" + MyIter:VALUE + "].".
}
Which would result in this output:
After reset, position = -1.
Item at position 0 is [Hello].
Item at position 1 is [Aloha].
Item at position 2 is [Bonjour].
-
structure
Iterator
¶ Members¶ Suffix Type Description RESET
Rewind to the just before the beginning NEXT
boolean Move iterator to the next item ATEND
boolean Check if iterator is at the end of the list INDEX
scalar Current index starting from zero VALUE
varies The object currently being pointed to
-
Iterator:
RESET
()¶ Call this to rewind the iterator to just before the beginning of the list. After a call to
Iterator:RESET
, the iterator must be moved withIterator:NEXT
before it gets to the first value in the list.
-
Iterator:
NEXT
()¶ Returns: boolean Call this to move the iterator to the next item in the list. Returns true if there is such an item, or false if no such item exists because it’s already at the end of the list.
-
Iterator:
ATEND
¶ Access: Get only Type: boolean Returns true if the iterator is at the end of the list and therefore cannot be “NEXTed”, false otherwise.
-
Iterator:
INDEX
¶ Access: Get only Type: scalar (integer) Returns the numerical index of how far you are into the list, starting the counting at 0 for the first item in the list. The last item in the list is numbered N-1, where N is the number of items in the list.
Note
If you have just used
Iterator:RESET
or have just created the ITERATOR, then the value ofIterator:INDEX
is -1. It only becomes 0 after the first call toIterator:NEXT
.
-
Iterator:
VALUE
¶ Access: Get only Type: varies Returns the thing stored at the current position in the list.