Extracting sequences
The previous section explains extraction from case classes, and how to write custom extractors, but it does not explain how extraction works on sequences:
scala> val Array(a, b) = Array(1, 2) a: Int = 1 b: Int = 2
Rather than relying on an unapply
method, sequences rely on an unapplySeq
method defined in the companion object. This is expected to return an Option[Seq[A]]
:
scala> Array.unapplySeq(Array(1, 2)) Option[IndexedSeq[Int]] = Some(Vector(1, 2))
Let's write an example. We will write an extractor for Breeze vectors (which do not currently support pattern matching). To avoid clashing with the DenseVector
companion object, we will write our unapplySeq
in a separate object, called DV
. All our unapplySeq
method needs to do ...
Get Scala: Guide for Data Science Professionals now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.