diff options
author | Martin Odersky <odersky@gmail.com> | 2009-09-25 16:20:13 +0000 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2009-09-25 16:20:13 +0000 |
commit | 4a727f3b01d0fa27ef51f7dba472116e021e3445 (patch) | |
tree | c9ab55ea7fe6051455271b23e9fbfc2f313015c0 /src/library/scala/collection/TraversableView.scala | |
parent | e31f18094dfba97c80871869a037172ff2c9c1c2 (diff) | |
download | scala-4a727f3b01d0fa27ef51f7dba472116e021e3445.tar.gz scala-4a727f3b01d0fa27ef51f7dba472116e021e3445.tar.bz2 scala-4a727f3b01d0fa27ef51f7dba472116e021e3445.zip |
Collections refactoring.
Diffstat (limited to 'src/library/scala/collection/TraversableView.scala')
-rw-r--r-- | src/library/scala/collection/TraversableView.scala | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/src/library/scala/collection/TraversableView.scala b/src/library/scala/collection/TraversableView.scala new file mode 100644 index 0000000000..e5d5400cf9 --- /dev/null +++ b/src/library/scala/collection/TraversableView.scala @@ -0,0 +1,39 @@ +/* __ *\ +** ________ ___ / / ___ Scala API ** +** / __/ __// _ | / / / _ | (c) 2003-2009, LAMP/EPFL ** +** __\ \/ /__/ __ |/ /__/ __ | http://scala-lang.org/ ** +** /____/\___/_/ |_/____/_/ | | ** +** |/ ** +\* */ + +// $Id$ + + +package scala.collection + +import generic._ +import mutable.Builder +import TraversableView.NoBuilder + +/** <p> + * A base class for views of <a href="../Traversable.html" + * target="ContentFrame"><code>Traversable<code></a>.<br/> + * Every subclass has to implenment the <code>foreach</code> method. + * </p> + * + * @author Martin Odersky + * @version 2.8 + */ +trait TraversableView[+A, +Coll] extends TraversableViewLike[A, Coll, TraversableView[A, Coll]] + +object TraversableView { + class NoBuilder[A] extends Builder[A, Nothing] { + def +=(elem: A): this.type = this + def iterator: Iterator[A] = Iterator.empty + @deprecated("use `iterator' instead") def elements = iterator + def result() = throw new UnsupportedOperationException("TraversableView.Builder.result") + def clear() {} + } + type Coll = TraversableView[_, C] forSome {type C <: Traversable[_]} + implicit def builderFactory[A]: BuilderFactory[A, TraversableView[A, Traversable[_]], Coll] = new BuilderFactory[A, TraversableView[A, Traversable[_]], Coll] { def apply(from: Coll) = new NoBuilder } +} |