# typedef Iterator<T>

#### no package

Available on all platforms

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:

https://haxe.org/manual/lf-iterators.html

### Properties

###

`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.

###

`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.