diff options
Diffstat (limited to 'src/library/scalax/collection/Builder.scala')
-rwxr-xr-x | src/library/scalax/collection/Builder.scala | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/src/library/scalax/collection/Builder.scala b/src/library/scalax/collection/Builder.scala index 87219c803b..2c80916d50 100755 --- a/src/library/scalax/collection/Builder.scala +++ b/src/library/scalax/collection/Builder.scala @@ -10,12 +10,22 @@ package scalax.collection - -trait Builder[+CC[B], A] extends mutable.Appendable[A] { +trait Builder[+CC[B], A] extends generic.mutable.Growable[A] { def +=(x: A) def elements: Iterator[A] def result: CC[A] override def ++=(xs: Iterator[A]) { for (x <- xs) this += x } override def ++=(xs: Iterable[A]) { for (x <- xs) this += x } + + def mapResult[DD[B]](f: CC[A] => DD[A]) = + new Builder[DD, A] with Proxy { + val self = Builder.this + def +=(x: A) = self += x + def elements: Iterator[A] = self.elements + def clear() = self.clear() + override def ++=(xs: Iterator[A]) = self ++= xs + override def ++=(xs: collection.Iterable[A]) = self ++= xs + def result: DD[A] = f(Builder.this.result) + } } |