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 IterableOnce
s 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)
- Companion:
- object
- Source:
- IsIterableOnce.scala
Type members
Types
type A
The type of elements we can traverse over (e.g.
The type of elements we can traverse over (e.g. Int
).
- Source:
- IsIterableOnce.scala
Value members
Abstract methods
A conversion from the representation type Repr
to a IterableOnce[A]
.
A conversion from the representation type Repr
to a IterableOnce[A]
.
- Source:
- IsIterableOnce.scala