2016-10-20 5 views
0

私はスカラー初心者です。同じ機能を呼び出すときに別の結果を得る

これは私のコードです。同じメソッドの使用の2つのタイプの結果は異なる、 誰も私に説明することができますなぜ???

enter image description here

+1

スクリーンショットを使用するのではなく、あなたの質問のテキストに、端末の出力をコピーして貼り付けてください、これに代えて

val lxx3 = lxx2.::(lxx1) 

に実際に等価である - それは可能性のあることがより困難にあなたを助けるための回答者。 –

+3

中抜き表記で使用されるコロンで終わるメソッドは、スカラーでは右結合であるため、 'lxx1 :: lxx2'は' lxx2。::(lxx1) 'と等価です。異なる操作を実行するため、異なる結果になります。 – alextsc

+0

@alextscしかし::ここではメソッド名ではありませんか? – Luis404

答えて

0

ものはインフィックス表記で使用される場合Scalaで、colon ':'で終わる名前を持つすべてのfunctions(または「オペレータ」)はright associativeとみなされることです。

だから... ...あなたの関数のために、

def ::(t: TG) = ??? 

、あなたは右に関数に::仲間を

val lxx3 = lxx1 :: lxx2 

を書いている(すなわち。lxx2で)。だから、

val lxx3 = lxx1.::(lxx2) 
+0

は、既にコメントに返答していたようです。 –

+0

より正確には、コロンで終わるメソッドは、右結合であり、右のオペランド上で追加的に呼び出される式を形成します(これらは2つの異なるものです)。 – fxlae

関連する問題