scala.MatchError
を吐いて死ぬ関数。isDefinedAt
メソッドで判定する。val foobar: PartialFunction[String, String] = { case "foo" => "bar" }
foobar("foo")
// "bar"
foobar.isDefinedAt("foo")
// true
foobar("bar")
// scala.MatchError
boobar.isDefinedAt("bar")
// false
case を複数指定したり、ワイルドカードを使うことも出来る。
val number: PartialFunction[Int, String] = {
case 1 => "one"
case 2 => "two"
case _ => "many"
}
orElse 演算子で複数の部分関数を結合できる
val one: PartialFunction[Int, String] = { case 1 => "one" }
val two: PartialFunction[Int, String] = { case 2 => "two" }
val many: PartialFunction[Int, String] = { case _ => "many" }
val nember = one orElse two orElse many
number(1)
// "one"
number(5)
// "many"