2012-03-29 9 views

回答

8

方法名是右關聯,所以b :: "apple"試圖調用一個字符串,不存在::方法。

如果您必須使用List,則附加內容的正常策略是在完成時將結果添加到開頭,然後reverse結果。但正如Rex所說,使用Vector可能會更好。

+0

啊,我明白了,謝謝!我想知道爲什麼它給了我那個字符串錯誤,我認爲它是在做什麼。所以第二:在::使它正確的聯想? – Andy 2012-03-29 14:26:24

+0

沒錯,就是這樣。 – 2012-03-29 14:31:12

6

::總是加入一個新的項目列表的頭部。添加項目到年底可以做到的,但是這需要時間成正比的名單(因爲整個列表不僅要穿越但實際上,又重修)的長度。

如果你真的必須將項目添加到列表的末尾,使用:+

List("pear","orange") :+ "apple" 

更重要的是,使用Vector當你需要添加到末尾(它的速度更快的雙端增加):在:結束

Vector("grape","peach") :+ "apple" 
0

另一種可能性是明確添加Nil到鏈的末端:

scala> val a = "apple" 
a: java.lang.String = apple 

scala> val b = "pear" 
b: java.lang.String = pear 

scala> a::b::Nil 
res0: List[java.lang.String] = List(apple, pear) 
+0

如果你有一個列表'VAL XS =名單(1,2,3)'來要追加,則需要在列表append方法'':::這種技術:'XS ::: 4 :: Nil'。 – 2012-03-29 22:00:25

相關問題