带有 postfixOps 的 Scala 映射

标签 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)
                ^

最佳答案

查看 map() 的签名:

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

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

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

关于带有 postfixOps 的 Scala 映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60690423/

相关文章:

scala - 具有通用返回类型的可选函数参数

Scala/Play http 身份验证问题 - 从请求中获取用户名和密码

C++ 使用任意数量的变量调用函数指针

function - 是否可以根据函数的输入值改变函数的返回类型注释?

r - 编写成对 t 检验的函数

java - 在 JVM 中分析 block 的正确方法?

scala - 在 Scala 中分配给 None 或 null 或 _ 的类(class)成员哪个更好,为什么?

python - 将函数及其参数之一传递给 Python 中的另一个函数

scala - 有条件地包含提供的范围依赖与 sbt 和通用插件

Python dict 调用函数作为值