为什么编译器无法正确推断出x
和y
的类型?
我已经阅读了一些关于Scala类型推断的文章,但仍然无法弄清楚为什么它是不可能的。
object Test {
def main(args: Array[String]) {
def add(x: Int, y: Int) = x + y
val f = (x,y) => add(y,x) // error: missing parameter type
}
}
答案 0 :(得分:2)
因为add
可能会被其他类型重载,因此实现它甚至可以处理像你这样的简单情况会给编译器带来很多复杂性。
修改强>:
你可能知道,haskell能够推断出这种声明的类型,但这只是因为haskell不支持重载这一事实。