例如,为什么不能执行以下操作?:
List(1, 2, 3).map(_ * _)
然而,有可能做到:
List(1, 2, 3).map(x => x * x)
在这种情况下,结果是1、4、9的列表。我知道还有其他方法可以解决这个特殊的问题,但我主要只是想明白为什么这不起作用。
每个下划线都按顺序引用一个新参数
所以_ * _
是(x, y) => x * y
的简写,而不是(x, y) => y * x
或x => x * x
。
map
采用将单个值映射到新值的函数。因此_ * _
与之不兼容。
因为map
操作只需要一个参数-映射一个元素。您需要创建一个运算符,它将变量本身乘以