summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/library/scala/collection/TraversableOnce.scala7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/library/scala/collection/TraversableOnce.scala b/src/library/scala/collection/TraversableOnce.scala
index 90f1583c58..84fe4bdf4c 100644
--- a/src/library/scala/collection/TraversableOnce.scala
+++ b/src/library/scala/collection/TraversableOnce.scala
@@ -346,7 +346,12 @@ object TraversableOnce {
}
class FlattenOps[A](travs: TraversableOnce[TraversableOnce[A]]) {
- def flatten: Iterator[A] = travs.foldLeft(Iterator.empty: Iterator[A])(_ ++ _)
+ def flatten: Iterator[A] = new Iterator[A] {
+ val its = travs.toIterator
+ private var it: Iterator[A] = Iterator.empty
+ def hasNext: Boolean = it.hasNext || its.hasNext && { it = its.next.toIterator; hasNext }
+ def next(): A = if (hasNext) it.next() else Iterator.empty.next()
+ }
}
class MonadOps[+A](trav: TraversableOnce[A]) {