Вы можете также определять свои собственные итераторы в собственных классах. Можно просто следовать определению 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++;
}
}
Как только ваш итератор реализован, вы можете просто использовать его с помощью нотации for...in, таким образом :
var iter = new IntIter(0,10);
for( i in iter ) {
// ...
}
Переменная в цикле for автоматически объявляется и её тип привязан к типу итератора. Она недоступна после того, как итерация окончена.
Комментарии
Отправить комментарий