IsIterableOnce

scala.collection.generic.IsIterableOnce
See theIsIterableOnce companion object
transparent 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,

  import scala.collection.BuildFrom
  extension [Repr, I <: IsIterableOnce[Repr]](coll: Repr)(using it: I) {
    final def filterMap[B, That](f: it.A => Option[B])(using bf: BuildFrom[Repr, B, That]): That = {
      val b = bf.newBuilder(coll)
      for(e <- it(coll).iterator) f(e).foreach(b += _)
      b.result()
    }
  }

  List(1, 2, 3, 4, 5).filterMap(i => if(i % 2 == 0) Some(i) else None)
  // == List(2, 4)

Attributes

Companion
object
Source
IsIterableOnce.scala
Graph
Supertypes
class Object
trait Matchable
class Any
Known subtypes
trait IsIterable[Repr]
trait IsMap[Repr]
trait IsSeq[Repr]

Members list

Type members

Types

type A

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

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

Attributes

Source
IsIterableOnce.scala

Value members

Abstract methods

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

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

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

Attributes

Source
IsIterableOnce.scala

Deprecated fields

val conversion: Repr => IterableOnce[A]

Attributes

Deprecated
[Since version 2.13.0] \'conversion\' is now a method named \'apply\'
Source
IsIterableOnce.scala