为什么这段代码会产生错误
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 吗?
为什么这段代码会产生错误
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 吗?
您需要第二个参数列表才能使其正常工作。我不确定规范中是如何定义的,但是我以前见过。
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)
这就是示例,如何在不更改任何内容的情况下使其适用于您的情况。
scala> println(test(List(1,2,3), (i: Int) => i * 2 ))
Scala 的类型推断是有限的,有时你应该帮忙!