したがって、次の「すべてをキャッチ」フォールバックを提供したいとしますPartialFunction
。
val foo: PartialFunction[Int, String] = { case 1 => "foo" }
val withDefault = foo orElse { _.toString }
これはコンパイルされません: missing parameter type for expanded function ((x$1) => x$1.toString)
. これ:
val withDefault = foo orElse { case x: Int => x.toString }
どちらもコンパイルしません (同じエラー)。
これ:
val withDefault = foo orElse { (x: Int) => x.toString }
で失敗しますtype mismatch; found : Int => String; required: PartialFunction[?,?]
それを機能させるために私が見つけた唯一の方法は、すべてを綴ることです:
val withDefault = foo orElse PartialFunction[Int, String] { _.toString }
これに適した構文はありますか? つまり、int から string への部分関数を、in から string への部分関数を受け取ることが期待される場所に渡していることを伝える必要はありません。これはまったく曖昧ではありませんが、なぜこれをしなければならないのですか?