An Iterator is a structure that permits iteration over elements of type T.

Any class with matching hasNext() and next() fields is considered an Iterator and can then be used e.g. in for-loops. This makes it easy to implement custom iterators.

See also:

next():T

Returns the current item of the Iterator and advances to the next one.

This method is not required to check hasNext() first. A call to this method while hasNext() is false yields unspecified behavior.

On the other hand, iterators should not require a call to hasNext() before the first call to next() if an element is available.

hasNext():Bool

Returns false if the iteration is complete, true otherwise.

Usually iteration is considered to be complete if all elements of the underlying data structure were handled through calls to next(). However, in custom iterators any logic may be used to determine the completion state.