有人可以解释为什么 nums.map(+2) 不起作用但 nums.map(2+) 有效吗?
scala> val nums=List(1,2,3,4)
nums: List[Int] = List(1, 2, 3, 4)
scala> nums.map(2+)
res3: List[Int] = List(3, 4, 5, 6)
scala> nums.map(+2)
<console>:27: error: type mismatch;
found : Int(2)
required: Int => ?
nums.map(+2)
^
最佳答案
查看 map()
的签名:
final def map[B](f: (A) => B): List[B]
参数 f
是从 A
到 B
的函数。 2+
满足该功能要求,因为它是 2.+(_)
的语法简写。换句话说,在 Int
类的实例上调用的 +()
方法通过 eta expansion 变成了一个适当的函数。 .
如果你想要 2
之前的 +
那么你可以 .map(_+2)
。
关于带有 postfixOps 的 Scala 映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60690423/