我想知道为什么scala不能推断出方法参数的类型.我可以看到haskel(也有类型推断)可以做同样的事情.那为什么不为斯卡拉?
sep*_*p2k 11
首先,Scala中的情况与Haskell有很大的不同,因为它是一种OO语言,面向对象设置中的类型推断有点复杂.
我知道唯一接近完全类型推断的OO语言是OCaml.OCaml通过广泛使用结构类型来实现这一点(oin 的推断类型let f o = o.foo 42是"具有作为参数的foo方法的对象int",推断的返回类型是"无论返回类型是什么o.foo",这是唯一有用的在这里推断类型).
然而,Scala有许多额外的功能(重载,隐式转换)会妨碍OCaml的方法,并且无法进行完整的全局类型推断.