Странно, но мой код печатает u
. Любые идеи, почему он делает такие вещи?Scala: PartialFunction странное поведение
object PF extends App {
val f1: PartialFunction[Int, String] = {
case x: Int if x % 2 == 0 => "2"
}
val f2: PartialFunction[Int, String] = {
case x: Int if x % 3 == 0 => "3"
}
val f3: PartialFunction[Int, String] = {
case x: Int if x % 5 == 0 => "5"
}
val result = f1.orElse(f2.orElse(f3.orElse("<undef>")))
println(result.apply(1))
}
Да, я вижу. Но почему компилятор позволяет подставлять типы (PartialFunction -> String)? Я предполагаю, что существует некоторое неявное преобразование, которое заменяет PF на String. Но я не могу его найти. – Finkelson
Я обновил свой ответ с объяснением. Надеюсь, это понятно :) – gzm0