IsIterableOnce

trait IsIterableOnce[Repr]

Type class witnessing that a collection representation type Repr has elements of type A and has a conversion to IterableOnce[A].

This type enables simple enrichment of IterableOnces with extension methods which can make full use of the mechanics of the Scala collections framework in their implementation.

Example usage,

class FilterMapImpl[Repr, I <: IsIterableOnce[Repr]](coll: Repr, it: I) { final def filterMap[B, That](f: it.A => Option[B])(implicit bf: BuildFrom[Repr, B, That]): That = { val b = bf.newBuilder(coll) for(e <- it(coll).iterator) f(e) foreach (b +=) b.result() } } implicit def filterMap[Repr](coll: Repr)(implicit it: IsIterableOnce[Repr]): FilterMapImpl[Repr, it.type] = new FilterMapImpl(coll, it) List(1, 2, 3, 4, 5) filterMap (i => if(i % 2 == 0) Some(i) else None) // == List(2, 4)
class Object
trait Matchable
class Any
trait IsIterable[Repr]
trait IsMap[Repr]
trait IsSeq[Repr]

Type members

Types

type A

The type of elements we can traverse over (e.g. Int).

Value members

Abstract methods

def apply(coll: Repr): IterableOnce[A]

A conversion from the representation type Repr to a IterableOnce[A].

Deprecated fields

@deprecated("\'conversion\' is now a method named \'apply\'", "2.13.0")
val conversion: Repr => IterableOnce[A]
Deprecated
Source
IsIterableOnce.scala