带有 postfixOps 的 Scala 地图

Sou*_*mya 3 scala function

有人可以解释为什么 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)
                ^
Run Code Online (Sandbox Code Playgroud)

jwv*_*wvh 6

查看签名map()

final def map[B](f: (A) => B): List[B]
Run Code Online (Sandbox Code Playgroud)

参数 ,f是一个从A到的函数B2+满足该功能要求,因为它是2.+(_). 换句话说,在类+()的实例上调用的方法Int通过eta 扩展变成了一个适当的函数。

如果你想要+before the 2then 你可以.map(_+2)

  • 而“+2”只是*正整数二*。 (4认同)