2011-07-15 79 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