2015-11-04 29 views
1

a ::: ba.:::(b)有什麼區別?爲什麼列表連接的不同行爲?

scala> val a = List(1,2,3,4) 
a: List[Int] = List(1, 2, 3, 4) 

scala> val b = List(5) 
b: List[Int] = List(5) 

scala> a.:::(b) 
res6: List[Int] = List(5, 1, 2, 3, 4) 

scala> a ::: b 
res7: List[Int] = List(1, 2, 3, 4, 5) 

回答

3

Scala中,其與一個:結束所有的功能都是右結合,並且因此,表達a ::: b計算結果爲b.:::(a)

3

當使用infix notation,與:結束方法(或操作員)是右結合 - 換句話說,該方法被調用的對象在其右側上,並且目的是其左側作爲參數傳遞。因此1 :: NilNil.::(1)相同。正如a ::: bb.:::(a)一樣。

1

因爲當你鍵入

a ::: b 

最後一個 ':' 使功能右結合。 因此,您所呼叫:::b沒有a

b.:::(a) 
相關問題