收集scala的不可靠性

时间:2018-05-04 13:35:46

标签: scala scala-collections

在Scala中的不可变集合中,当集合的长度发生更改时,将创建一个新对象。假设我创建了一个不可变数组,然后执行连接:

object Dcoder extends App
{
    var array=Array("abc","xyz")
    var change =array++Array("change of object")
}

是否因++而创建了新对象?由于我使用了不可变集合并且其长度发生了变化,是否由更改引起了对象创建?

2 个答案:

答案 0 :(得分:4)

如阵列文档中所述

  

def ++ [B>:A,那](即:GenTraversableOnce [B])(隐式bf:CanBuildFrom [Array [T],B,That]):那个

     

返回一个新的可变索引序列,其中包含左手操作数中的元素,后跟右手操作数中的元素。

它返回一个新对象。有些事情尚不清楚:它是否保留了对前一个对象中项目的引用?要检查我们可以尝试:

rotation.order

所以它不是引用旧的值,而只是复制它们,因为它是一个可变的集合,所以它是有意义的。

答案 1 :(得分:0)

您只是使用中缀表示法(https://www.scala-lang.org/api/current/scala/Array.html

在Array对象上调用++方法(文档https://docs.scala-lang.org/style/method-invocation.html