このコードはうまくいくとは思いませんが、うまくいきます (Scala 2.10 では):
scala> ((i: Int) => i.toString match {
| case s if s.length == 2 => "A two digit number"
| case s if s.length == 3 => "A three digit number"
| }): PartialFunction[Int,String]
res0: PartialFunction[Int,String] = <function1>
// other interactions omitted
scala> res0.orElse(PartialFunction((i: Int) => i.toString))
res5: PartialFunction[Int,String] = <function1>
scala> res5(1)
res6: String = 1
それはどのように機能しますか?MatchError
a が の中にスローされることを期待していますres0
。
res0
Scala 言語仕様は、どのように解釈されるべきかを明示的に文書化していないようです。