在Scala(两个单独的操作)中_._ 1和_ ++ _是什么意思?

时间:2012-10-24 09:03:42

标签: scala

我对_._1的解释是:

_ =通配符参数 _1 =方法参数列表中的第一个参数 但是当与.一起使用时,它意味着什么?

这是它的用法:

.toList.sortWith(_._1 < _._1)

对于本声明:

_++_

我输了。是以某种方式连接两个通配符参数? 这就是它的用法:

.reduce(_++_)

如果上面的代码可以变得更加冗长并删除任何含义,我会特别感兴趣,这样我才能更好地理解它?

3 个答案:

答案 0 :(得分:11)

_._1调用通配符参数_1上的方法_,该参数获取元组的第一个元素。因此,sortWith(_._1 < _._1)按其第一个元素对元组列表进行排序。

_++_使用第二个参数作为参数调用第一个通配符参数上的方法++++对序列进行连接。因此.reduce(_++_)将序列列表连接在一起。通常您可以使用flatten

答案 1 :(得分:7)

_1是方法名称。具体来说,元组有一个名为_1的方法,它返回元组的第一个元素。所以_._1 < _._1表示“在两个参数上调用_1方法并检查第一个是否小于第二个”。

是的,_++_连接两个参数(假设第一个参数有一个执行连接的++方法)。

答案 2 :(得分:3)

.reduce(_++_)

真的只是:

.reduce{ (acc, n) => acc ++ n }