2012-10-24 33 views
9

我的_._1解釋是:Scala中的_. 1和_ ++ _意味着什麼(兩個獨立的操作)?

_ =通配符參數 _1 =第一個參數的方法的參數列表 但隨着.一起使用時,這是什麼表示?

這是它的使用方式:

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

對於這一說法:

_++_ 

我迷路了。莫名其妙地連接兩個通配符參數? 這是它的使用方式:

.reduce(_++_) 

我想,如果他們上面的代碼可以作出更詳細,並移除任何implicits特別感興趣,只是這樣我就可以更好地理解它?

回答

10

_._1呼籲通配符參數_,它獲取一個元組的第一個元素的方法_1。因此,sortWith(_._1 < _._1)通過它們的第一個元素對元組列表進行排序。

_++_使用第二個參數作爲參數調用第一個通配符參數的方法++++確實串聯序列。因此.reduce(_++_)將序列列表連接在一起。通常你可以使用flatten

5

_1是方法名稱。具體來說,元組有一個名爲_1的方法,它返回元組的第一個元素。所以_._1 < _._1的意思是「對兩個參數調用_1方法並檢查第一個是否小於第二個」。

是的,_++_連接兩個參數(假設第一個參數有一個執行連接的++方法)。

3
.reduce(_++_) 

其實只是:

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