diff options
Diffstat (limited to 'src/library/scalax/collection/generic/Subtractable.scala')
-rwxr-xr-x | src/library/scalax/collection/generic/Subtractable.scala | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/src/library/scalax/collection/generic/Subtractable.scala b/src/library/scalax/collection/generic/Subtractable.scala new file mode 100755 index 0000000000..93fe2f8190 --- /dev/null +++ b/src/library/scalax/collection/generic/Subtractable.scala @@ -0,0 +1,64 @@ +/* __ *\ +** ________ ___ / / ___ Scala API ** +** / __/ __// _ | / / / _ | (c) 2003-2009, LAMP/EPFL ** +** __\ \/ /__/ __ |/ /__/ __ | http://scala-lang.org/ ** +** /____/\___/_/ |_/____/_/ | | ** +** |/ ** +\* */ + +// $Id: Iterable.scala 15188 2008-05-24 15:01:02Z stepancheg $ + +package scalax.collection.generic + +/** This class represents collections that can be reduced using a -= operator. + * + * @autor Martin Odersky + * @owner Martin Odersky + * @version 2.8 + */ +trait Subtractable[+C <: Subtractable[C, A], A] { + + protected def thisCC: C + + /** Removes a single element from this collection and returns + * either the collection itself (if it is mutable), or a new collection + * with the removed element. + * + * @param elem the element to remove. + */ + def -(elem: A): C + + /** Removes two or more elements from this collection and returns + * either the collection itself (if it is mutable), or a new collection + * with the removed elements. + * + * @param elem1 the first element to remove. + * @param elem2 the second element to remove. + * @param elems the remaining elements to remove. + */ + def -(elem1: A, elem2: A, elems: A*): C = + thisCC - elem1 - elem2 -- elems.asInstanceOf[Iterable[A]] // !@! + + /** Removes a number of elements provided by an iterable object + * via its <code>elements</code> method and returns + * either the collection itself (if it is mutable), or a new collection + * with the removed elements. + * + * @param iter the iterable object. + */ + def --(iter: Iterable[A]): C = (thisCC /: iter) (_ - _) + + /** Removes a number of elements provided by an iterator + * via its <code>elements</code> method and returns + * either the collection itself (if it is mutable), or a new collection + * with the removed elements. + * + * @param iter the iterator + */ + def --(iter: Iterator[A]): C = (thisCC /: iter) (_ - _) + +} + + + + |