在Scala中的不可变集合中,当集合的长度发生更改时,将创建一个新对象。假设我创建了一个不可变数组,然后执行连接:
object Dcoder extends App
{
var array=Array("abc","xyz")
var change =array++Array("change of object")
}
是否因++
而创建了新对象?由于我使用了不可变集合并且其长度发生了变化,是否由更改引起了对象创建?
答案 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)