Реализация Итераторов

Вы можете также определять свои собственные итераторы в собственных классах. Можно просто следовать определению iterator в вашем классе реализуя методы hasNext и next. Вот, например, класс IntIter являющийся частью стандартной библиотеки:

class IntIter {
    var min : Int;
    var max : Int;

    public function new( min : Int, max : Int ) {
        this.min = min;
        this.max = max;
    }

    public function hasNext() {
        return( min < max );
    }

    public function next() {
        return min++;
    }
}
</div>

Как только ваш итератор реализован, вы можете просто использовать его с помощью нотации for...in, таким образом :

var iter = new IntIter(0,10);
for( i in iter ) {
    // ...
}
</div>

Переменная в цикле for автоматически объявляется и её тип привязан к типу итератора. Она недоступна после того, как итерация окончена.