Trait Traversable | Contents |
At the top of the collection hierarchy is trait Traversable. Its only abstract operation is foreach:
def foreach[U](f: Elem => U)
Collection classes that implement Traversable just need to define this method; all other methods can be inherited from Traverable.
The foreach method is meant to traverse all elements of the collection, and apply the given operation, f, to each element. The type of the operation is Elem => U, where Elem is the type of the collection's elements and U is an arbitrary result type. The invocation of f is done for its side effect only; in fact any function result of f is discarded by foreach.
Traversable also defines many concrete methods, which are all listed in The following table. These methods fall into the following categories:
Operations in class Traversable | |
What it is | What it does |
Abstract Method: | |
xs foreach f | Executes function f for every element of xs. |
Addition: | |
xs ++ ys | A collection consisting of the elements of both xs and ys. ys is a TraversableOnce collection, i.e., either a Traversableor an Iterator. |
Maps: | |
xs map f | The collection obtained from applying the function f to every element in xs. |
xs flatMap f | The collection obtained from applying the collection-valued function f to every element in xs and concatenating the results. |
xs collect f | The collection obtained from applying the partial function f to every element in xs for which it is defined and collecting the results. |
Conversions: | |
xs.toArray | Converts the collection to an array. |
xs.toList | Converts the collection to a list. |
xs.toIterable | Converts the collection to an iterable. |
xs.toSeq | Converts the collection to a sequence. |
xs.toIndexedSeq | Converts the collection to an indexed sequence. |
xs.toStream | Converts the collection to a lazily computed stream. |
xs.toSet | Converts the collection to a set. |
xs.toMap | Converts the collection of key/value pairs to a map. If the collection does not have pairs as elements, calling this operation results in a static type error. |
Copying: | |
xs copyToBuffer buf | Copies all elements of the collection to buffer buf. |
xs copyToArray(arr, s, n) | Copies at most n elements of the collection to array arr starting at index s. The last two arguments are optional. |
Size info: | |
xs.isEmpty | Tests whether the collection is empty. |
xs.nonEmpty | Tests whether the collection contains elements. |
xs.size | The number of elements in the collection. |
xs.hasDefiniteSize | True if xs is known to have finite size. |
Element Retrieval: | |
xs.head | The first element of the collection (or, some element, if no order is defined). |
xs.headOption | The first element of xs in an option value, or None if xs is empty. |
xs.last | The last element of the collection (or, some element, if no order is defined). |
xs.lastOption | The last element of xs in an option value, or None if xs is empty. |
xs find p | An option containing the first element in xs that satisfies p, or None is no element qualifies. |
Subcollections: | |
xs.tail | The rest of the collection except xs.head. |
xs.init | The rest of the collection except xs.last. |
xs slice (from, to) | A collection consisting of elements in some index range of xs (from from up to, and excluding to). |
xs take n | A collection consisting of the first n elements of xs (or, some arbitrary n elements, if no order is defined). |
xs drop n | The rest of the collection except xs take n. |
xs takeWhile p | The longest prefix of elements in the collection that all satisfy p. |
xs dropWhile p | The collection without the longest prefix of elements that all satisfy p. |
xs filter p | The collection consisting of those elements of xs that satisfy the predicate p. |
xs withFilter p | A non-strict filter of this collection. Subsequent calls to map, flatMap, foreach, and withFilter will only apply to those elements of xs for which the condition p is true. |
xs filterNot p | The collection consisting of those elements of xs that do not satisfy the predicate p. |
Subdivisions: | |
xs splitAt n | Split xs at a position, giving the pair of collections (xs take n, xs drop n). |
xs span p | Split xs according to a predicate, giving the pair of collections (xs takeWhile p, xs.dropWhile p). |
xs partition p | Split xs into a pair of two collections; one with elements that satisfy the predicate p, the other with elements that do not, giving the pair of collections (xs filter p, xs.filterNot p) |
xs groupBy f | Partition xs into a map of collections according to a discriminator function f. |
Element Conditions: | |
xs forall p | A boolean indicating whether the predicate p holds for all elements of xs. |
xs exists p | A boolean indicating whether the predicate p holds for some element in xs. |
xs count p | The number of elements in xs that satisfy the predicate p. |
Folds: | |
(z /: xs)(op) | Apply binary operation op between successive elements of xs, going left to right and starting with z. |
(xs :\ z)(op) | Apply binary operation op between successive elements of xs, going right to left and starting with z. |
xs.foldLeft(z)(op) | Same as (z /: xs)(op). |
xs.foldRight(z)(op) | Same as (xs :\ z)(op). |
xs reduceLeft op | Apply binary operation op between successive elements of non-empty collection xs, going left to right. |
xs reduceRight op | Apply binary operation op between successive elements of non-empty collection xs, going right to left. |
Specific Folds: | |
xs.sum | The sum of the numeric element values of collection xs. |
xs.product | The product of the numeric element values of collection xs. |
xs.min | The minimum of the ordered element values of collection xs. |
xs.max | The maximum of the ordered element values of collection xs. |
Strings: | |
xs addString (b, start, sep, end) | Adds a string to StringBuilder b that shows all elements of xs between separators sep enclosed in strings start and end. start, sep, end are all optional. |
xs mkString (start, sep, end) | Converts the collection to a string that shows all elements of xs between separators sep enclosed in strings start and end. start, sep, end are all optional. |
xs.stringPrefix | The collection name at the beginning of the string returned from xs.toString. |
Views: | |
xs.view | Produces a view over xs. |
xs view (from, to) | Produces a view that represents the elements in some index range of xs. |
Next: Trait Iterable
Trait Traversable | Contents |