2017-09-14 112 views
2

新手到Scala,即時通訊尋找處理收藏混淆的象徵符號。要將項目追加到列表或向量我可以使用:Prepend to vector scala

List(1, 2, 3) :+ 4 

我理解是本方法

List(1, 2, 3).:+(4) 

的綴形式如果我想預先考慮到一個列表,我可以使用

List(1, 2, 3).+:(4) 

然而,綴形式給我一個編譯錯誤

List(1,2,3) +: 4 
Error:(121, 16) value +: is not a member of Int 
Vector(1,2,4) +: 4 
      ^

有人可以告訴我

回答

3

在Scala中,方法終止於結腸:和綴符號使用時是右結合,這意味着該方法存在於右手側的元件上。您需要:

4 +: List(1,2,3) 

當使用List[T]與點符號,這不會發生,因爲這是在列表中的顯式調用。當使用中綴表示法時,編譯器會執行附加語法desugaring。這:

List(1,2,3) +: 4 

變成

4.+:(List(1,2,3)) 

,但是沒有找到一個+:Int,所以它抱怨。

+0

謝謝可以推薦上修改集合API和如何解釋重載運算的基本知識一些資源,關於這一主題的斯卡拉文檔是很稀疏 –

+0

@LukeDeFeo我會以https://docs.scala-lang .ORG /概述/收藏/ overview.html –