为什么(在Scala REPL中)我可以编写,例如,
def double(d: Int) = 2*d
(0 until 10).zipWithIndex.map(i => double(i._1))
或只是
(0 until 10).zipWithIndex.map(_._1)
但我不能写
(0 until 10).zipWithIndex.map(double(_._1))
error: missing parameter type for expanded function ((x$1) => x$1._1) (0 until 10).zipWithIndex.map(double(_._1))
答案 0 :(得分:11)
Scala尝试在 _._1
内展开double
。所以,它认为你想拥有
(0 until 10).zipWithIndex.map(double(i => i._1))
但是,它也发现i => i._1
并不真正适合double
的一个参数类型,因此它会抱怨并要求您提供类型提示来帮助编译器。但是,在这种情况下,没有正确的类型定义,因此错误消息在那里是错误的。