【问题标题】:Scala map with postfixOps带有 postfixOps 的 Scala 映射
【发布时间】:2020-03-15 15:04:46
【问题描述】:

谁能解释为什么 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)
                ^

【问题讨论】:

    标签: scala function


    【解决方案1】:

    查看map()的签名:

    final def map[B](f: (A) => B): List[B]
    

    参数f 是一个从AB 的函数。 2+ 满足该功能要求,因为它是 2.+(_) 的语法简写。换句话说,在Int 类的实例上调用的+() 方法通过eta expansion 转换为适当的函数。

    如果你想要+2 之前,那么你可以.map(_+2)

    【讨论】:

    • +2 只是正整数二
    猜你喜欢
    • 2022-01-19
    • 1970-01-01
    • 2021-12-02
    • 2019-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-30
    • 2014-09-21
    相关资源
    最近更新 更多