Итак, предположим, я хочу, чтобы обеспечить «поймать всех» падают обратно на 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 до строки туда, где он ожидает получить частичную функцию из строки в строку. Это вовсе не двусмысленно, почему я должен это делать?
http://stackoverflow.com/questions/930698/why-is-partialfunction-function-in-scala можно использовать –