为什么这段代码会产生错误
def test[A](a: List[A], f: A => A) = a.map(f)
println(test(List(1,2,3), _*2))
error: missing parameter type for expanded function ((x$2) => x$2.$times(2))难道Scala不应该知道A是Int吗?
发布于 2012-12-14 04:42:50
您需要第二个参数列表才能正常工作。我不确定这是如何在规范中定义的,但我以前见过这种情况。
scala> def test[A](a: List[A])(f: A => A) = a.map(f)
test: [A](a: List[A])(f: (A) => A)List[A]
scala> test(List(1))(_+1)
res1: List[Int] = List(2)发布于 2014-06-20 04:09:39
这是一个例子,如何在不做任何改变的情况下让它在你的情况下工作。
scala> println(test(List(1,2,3), (i: Int) => i * 2 ))Scala的类型推断是有限的,有时你应该提供帮助!
这是一篇Making the most of Scala's (extremely limited) type inference 文章
https://stackoverflow.com/questions/13868085
复制相似问题