所以,假设,我想为 a 提供一个“包罗万象”的后备方案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 的部分函数的位置。这一点都不含糊,我为什么要这样做?