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] = Function.unlift(f)
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]
, scala.PartialFunction and Extractor.