为什么不能使用占位符语法将地图占位符与其自身相乘?

时间:2015-11-25 23:39:48

标签: scala

例如,为什么你不能做以下事情?:

List(1, 2, 3).map(_ * _)

但是可以做到:

List(1, 2, 3).map(x => x * x)

在这种情况下,结果是1,4,9的列表。我理解还有其他解决这个特定问题的方法,但我主要是想了解为什么这不起作用。

2 个答案:

答案 0 :(得分:2)

每个下划线按顺序引用一个新参数 因此_ * _(x, y) => x * y的简写,而不是(x, y) => y * xx => x * x

map采用将单个值映射到新值的函数。所以_ * _与它不相容。

答案 1 :(得分:1)

因为map操作只接受一个参数 - 所以您映射一个元素。您需要创建自变量乘以变量的运算符