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