2011-07-15 84 views
10

斯卡拉既有可變的也有不可變的映射,但它只有一個不可變的列表。 如果你想要一個可變列表,你需要一個ListBuffer。沒有斯卡拉可變列表

我不明白這是爲什麼。 任何人都知道?

+2

沒有[MutableList](http://www.scala-lang.org/api/current/scala/collection/mutable/MutableList.html)? – Nishant

+0

'List'在計算機科學中具有非常具體的含義,Scala遵循這個定義(而不是繼續Java的這個術語的濫用:-D)。 – soc

+0

這是一個重複的,但不幸的是,我找不到較舊的。 –

回答

6

我希望這篇文章對您有些用處。頁面底部的圖對於提供可變類和不可變類非常有用。

http://www.scala-lang.org/docu/files/collections-api/collections_1.html

+1

Jean-Philippe Pellet接受的答案更直接,並且給你一些你可以扔進你的代碼的類,以便解決你的問題。但是,格雷厄姆實際上回答了你的問題,「爲什麼這樣?」。我希望你能閱讀他提供的鏈接,因爲它可以幫助你更好地理解Scala中可變和不可變集合背後的想法。 –

3

有一個可變的List,但它被稱爲Buffer。 Graham鏈接的文章更深入,但我認爲這個問題也應該有一個特定的答案。

0

Maptrait - 類似於Java的interface - ,而ListclassSeq的具體實現。有可變和不可變的Seq,就像Map一樣。

這可能是令人困惑的Java程序員因爲,在Java,Listinterface,其(主)的實現是ArrayListLinkedList。唉,Java命名是殘酷的。首先,ArrayList不是任何想象力的List。此外,該界面的方法與任何傳統列表都沒有真正的關聯。

所以,如果你想要mutable/immutable equivalence,請看具體的子類實現Seq