У меня есть код SCALA следующимЛа Скала компилятор не может найти правильный общий параметр функции
object Main extends App {
def getFun[T, U](x: Array[T] => U, p: Array[T]): U = { x(p) }
def getFun2(x: Array[Int] => Double, p: Array[Int]): Double = { x(p) }
val arr = Array(1, 2, 3, 4)
println(getFun((x: Array[Int]) => x.sum, arr))
// println(getFun(_.sum, arr)) // error, why!
// println(getFun(x = _.sum, arr)) // error, why!
println(getFun2(_.sum.toDouble, p = arr))
}
Почему getFun не может быть использован как простой, как getFun2. Я думаю, что использовать «x = _.sum», компилятор scala может найти правильный тип, но кажется, что он потерпел неудачу.
Может ли какой-либо орган объяснить причину ошибки.
Спасибо!
Хорошее объяснение, спасибо. – bourneli