Scala, расширяющий итератор

Я хочу расширить итератор, чтобы создать новый метод takeWhileInclusive , который будет работать как takeWhile , но будет включать последний элемент.

Моя проблема заключается в том, как лучше всего расширить итератор, чтобы он возвращал новый итератор, оценка которого я бы хотел отложить. Исходя из опыта работы с C #, я обычно использую IEnumerable и использую ключевое слово yield , но такой опции, похоже, нет в Scala.

например, я мог бы иметь

List(0,1,2,3,4,5,6,7).iterator.map(complex time consuming algorithm).takeWhileInclusive(_ < 6)

, поэтому в этом случае takeWhileInclusive будет разрешать только предикат для значений, пока я не получу результат больше 6, и он будет включать этот первый результат

пока у меня есть:

object ImplicitIterator {
  implicit def extendIterator(i : Iterator[Any]) = new IteratorExtension(i)
}

class IteratorExtension[T <: Any](i : Iterator[T]) {
  def takeWhileInclusive(predicate:(T) => Boolean) = ?
}
10
задан 0__ 8 June 2013 в 12:01
поделиться