ClassicIterator

GoFデザパタに出てくるような、古典的イテレータメソッドを持つクラスを追加することにしました。
イテレータに対し、classicメソッドを呼び出すと元のイテレータがClassicIteratorに包まれて取得できます。

iter: 3.times.classic;
for(; !iter.is_done; iter.next){
  iter.current.p;
}
//=> 0
//=> 1
//=> 2

ClassicIterator::next: method
次の要素に進む


ClassicIterator::current: method
現在の要素を返す


ClassicIterator::is_done: method
イテレータが終了したらtrue


ClassicIterator::has_next: method
イテレータが終了してなかったらtrue

古典的なイテレータインターフェイスの方がループしやすい場合もあると考え、用意することにしました。