February 2017
Beginner to intermediate
1100 pages
25h 19m
English
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 ...
Read now
Unlock full access