2011-07-08 31 views
42

有些事我不明白Scala的collection.mutable.Seq。它描述了所有可變序列的接口,但是我沒有看到在不創建新序列的情況下追加或前置元素的方法。我在這裏錯過了很明顯的東西嗎如何在Scala上添加或添加變量.Seq

對於append和prepend,分別有:++:,但他們創建了新的集合 - 爲了與不可變序列的行爲一致,我假設。這很好,但是爲什麼沒有像+=+=:這樣的方法,如ArrayBufferListBuffer定義,用於就地附加和前置?這是否意味着我不能引用一個可變的seq,如果我想要就地附加,那麼鍵入爲collection.mutable.Seq

我必須再次錯過了一些東西很明顯,但不能找到什麼...

回答

69

可變性的序列保證你就可以(通過update方法),以換出不同的人的項目,你可以用例如原始數組。它確實是而不是保證你能夠使序列更大(這就是Growable特徵的作用)或更小(Shrinkable)。

Buffer是包含GrowableShrinkable而不是Seq的抽象特徵。

+1

這一切都有道理吧!這是我錯過的顯而易見的部分。謝謝! –

+3

哦。我想知道這是否對任何人都有用。 –