斯卡拉强调解释

GA1*_*GA1 5 functional-programming scala tuples

看看这些scala片段:如果我们有这样的东西:

List(List(1, 2), List(3, 4), List(5)) map (x => (x.size))
Run Code Online (Sandbox Code Playgroud)

我们可以缩短到:

List(List(1, 2), List(3, 4), List(5)) map ((_.size))
Run Code Online (Sandbox Code Playgroud)

但是,如果我们有这样的事情:

List(List(1, 2), List(3, 4), List(5)) map (x => (x.size, x.size))
Run Code Online (Sandbox Code Playgroud)

为什么我们不能缩短它:

List(List(1, 2), List(3, 4), List(5)) map ((_.size, _.size))
Run Code Online (Sandbox Code Playgroud)

Ser*_*tin 5

占位符的数量应等于函数参数的数量.在你的情况下map有1个参数,这就是为什么你不能使用两个占位符.

  • @ GA1在Scala中没有办法做到这一点.这不是"危险"; 这是由于_如何用于函数速记.下划线只能在每个参数的主体中使用一次.要获得等效的(_.size,_.size),您必须使用完整的函数签名或映射到_.size,并将结果列表转换为具有重复条目的元组. (2认同)