例如,你为什么不能做?:以下为什么不能使用占位符语法将地图占位符与自身相乘?
List(1, 2, 3).map(_ * _)
然而,它有可能做到:
List(1, 2, 3).map(x => x * x)
在这种情况下,结果是一个1 9名单,4, 。我知道还有其他解决这个问题的方法,但我主要只是想明白为什么这不起作用。
例如,你为什么不能做?:以下为什么不能使用占位符语法将地图占位符与自身相乘?
List(1, 2, 3).map(_ * _)
然而,它有可能做到:
List(1, 2, 3).map(x => x * x)
在这种情况下,结果是一个1 9名单,4, 。我知道还有其他解决这个问题的方法,但我主要只是想明白为什么这不起作用。
每个下划线指的是一个新的参数,按顺序。
因此_ * _
是(x, y) => x * y
的简写 - 不是(x, y) => y * x
或x => x * x
。
map
采用将单个值映射到新值的函数。因此_ * _
与它不兼容。
因为map
操作只需要一个参数 - 您映射一个元素。你需要创建一个运算符,它自己乘以变量
注意解释downvote? – Seer
对我来说这似乎是一个合理的问题,我给了你一个赞成票,因为我认为其他人会觉得它有用。 – Oli