Utilities to convert between A => Option[B], PartialFunction[A, B] and Extractor.
Utilities to convert between A => Option[B], PartialFunction[A, B] and Extractor.
Example:
import com.thoughtworks.Extractor._
// Define a PartialFunctionval pf: PartialFunction[Int, String] = {
case1=>"matched by PartialFunction"
}
// Define an optional functionval f: Int=>Option[String] = { i =>if (i == 2) {
Some("matched by optional function")
} else {
None
}
}
// Convert an optional function to a PartialFunctionval pf2: PartialFunction[Int, String] = f.unlift
util.Random.nextInt(4) match {
case pf.extract(m) =>// Convert a PartialFunction to a pattern
println(m)
case f.extract(m) =>// Convert an optional function to a pattern
println(m)
case pf2.extract(m) =>// Convert a PartialFunction to a patternthrownew AssertionError("This case should never occur because it has the same condition as `f.extract`.")
case _ =>
println("Not matched")
}
Utilities to convert between
A => Option[B]
,PartialFunction[A, B]
and Extractor.