2012-10-24 7 views
9
_._1の私の解釈がある

Scalaでは_._ 1と_ ++ _は何を意味しますか(2つの別々の操作)?

_ =ワイルドカードパラメータ _1 =最初のパラメータメソッドのパラメータリスト しかし.と一緒に使用する場合、それは何を意味するんでは?

これは、その使用方法です。この文の

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

_++_ 

私は迷ってしまいました。それは何とか2つのワイルドカードパラメータの連結ですか? これは、その使用方法です:

.reduce(_++_) 

コード上で、彼らはちょうどので、私はそれをよりよく理解することができ、より冗長作られ、任意の暗黙を削除することができれば、私は特に興味があるのでしょうか?

答えて

10

_._1は、タイルの最初の要素を取得するワイルドカードパラメータ_でメソッド_1を呼び出します。したがって、sortWith(_._1 < _._1)はタプルのリストを最初の要素でソートします。

_++_は、最初のワイルドカードパラメータで、2番目のパラメータを引数としてメソッド++を呼び出します。 ++は配列の連結を行います。したがって、.reduce(_++_)は、シーケンスのリストを一緒に連結する。通常、それにはflattenを使用できます。

5

_1はメソッド名です。具体的には、タプルは_1という名前のメソッドを持ち、タプルの最初の要素を返します。だから_._1 < _._1は "両方の引数で_1メソッドを呼び出し、最初のものが2番目のものより小さいかどうかを確認する"という意味です。

はい、_++_は両方の引数を連結します(最初の引数には連結を実行するメソッド++があるとします)。

3
.reduce(_++_) 

本当にです:

.reduce{ (acc, n) => acC++ n } 
関連する問題