Skip to content
Permalink
Browse files
Add missing methods to GenTraversableLike.
  • Loading branch information
Aleksandar committed May 6, 2012
1 parent f146d58 commit 2eb186f67b196d933a0ae831bf8088a5b000ad12
@@ -141,7 +141,4 @@ trait GenIterableLike[+A, +Repr] extends Any with GenTraversableLike[A, Repr] {
*/
def zipAll[B, A1 >: A, That](that: GenIterable[B], thisElem: A1, thatElem: B)(implicit bf: CBF[Repr, (A1, B), That]): That

def isEmpty = iterator.isEmpty

def head = iterator.next
}
@@ -59,24 +59,55 @@ trait GenTraversableLike[+A, +Repr] extends Any with GenTraversableOnce[A] with

def size: Int

/** Selects the first element of this $coll.
* $orderDependent
* @return the first element of this $coll.
* @throws `NoSuchElementException` if the $coll is empty.
*/
def head: A


/** Optionally selects the first element.
* $orderDependent
* @return the first element of this $coll if it is nonempty,
* `None` if it is empty.
*/
def headOption: Option[A]

/** Tests whether this $coll can be repeatedly traversed.
* @return `true`
*/
final def isTraversableAgain = true
def isTraversableAgain: Boolean

/** Selects all elements except the first.
* $orderDependent
* @return a $coll consisting of all elements of this $coll
* except the first one.
* @throws `UnsupportedOperationException` if the $coll is empty.
*/
def tail: Repr = {
if (isEmpty) throw new UnsupportedOperationException("empty.tail")
drop(1)
}
def tail: Repr

/** Selects the last element.
* $orderDependent
* @return The last element of this $coll.
* @throws NoSuchElementException If the $coll is empty.
*/
def last: A

/** Optionally selects the last element.
* $orderDependent
* @return the last element of this $coll$ if it is nonempty,
* `None` if it is empty.
*/
def lastOption: Option[A]

/** Selects all elements except the last.
* $orderDependent
* @return a $coll consisting of all elements of this $coll
* except the last one.
* @throws `UnsupportedOperationException` if the $coll is empty.
*/
def init: Repr

/** Computes a prefix scan of the elements of the collection.
*
* Note: The neutral element `z` may be applied more than once.
@@ -84,6 +84,8 @@ trait TraversableLike[+A, +Repr] extends Any
*/
def repr: Repr = this.asInstanceOf[Repr]

final def isTraversableAgain: Boolean = true

/** The underlying collection seen as an instance of `$Coll`.
* By default this is implemented as the current collection object itself,
* but this can be overridden.
@@ -178,10 +178,30 @@ self: ParIterableLike[T, Repr, Sequential] =>

def repr: Repr = this.asInstanceOf[Repr]

final def isTraversableAgain = true

def hasDefiniteSize = true

def isEmpty = size == 0

def nonEmpty = size != 0


def head = iterator.next

def headOption = if (nonEmpty) Some(head) else None

def tail = drop(1)

def last = {
var lst = head
for (x <- this.seq) lst = x
lst
}

def lastOption = if (nonEmpty) Some(last) else None

def init = take(size - 1)

/** Creates a new parallel iterator used to traverse the elements of this parallel collection.
* This iterator is more specific than the iterator of the returned by `iterator`, and augmented
* with additional accessor and transformer methods.
@@ -0,0 +1,20 @@



import collection._



object Test {

def main(args: Array[String]) {
val gen: GenTraversable[Int] = List(1, 2, 3)
gen.head
gen.headOption
gen.tail
gen.last
gen.lastOption
gen.init
}

}

0 comments on commit 2eb186f

Please sign in to comment.