gpt4 book ai didi

Scala collection.mutable.Cloneable 目的

转载 作者:行者123 更新时间:2023-12-02 22:35:13 36 4
gpt4 key购买 nike

在尝试克隆可变集合时,我最初的方法是对 mutable.Cloneable 特征使用 clone() 方法。但是,这取决于创建引用副本的 java.Object.clone 实现,而不是深拷贝。通过测试,我可以确认 mutable.{Queue,Seq,Set} 都是浅拷贝。

我已采用粗略的 new xxx(copy:_*) 方法来创建深拷贝,但我的问题是如果未实现 mutable.Cloneable 特征的目的是什么?

最佳答案

mutable.Cloneable 特性已在许多集合类上实现。下面是几个例子:

https://github.com/scala/scala/blob/master/src/library/scala/collection/mutable/ArrayBuffer.scala#L176

https://github.com/scala/scala/blob/master/src/library/scala/collection/mutable/HashSet.scala#L82

https://github.com/scala/scala/blob/master/src/library/scala/collection/mutable/WrappedArray.scala#L78

只是 clone 没有定义返回深拷贝。这样做的原因是,您通常只想复制一个可变集合,以便可以在不更改原始集合的情况下以某种方式对其进行修改 - 您可能希望保留其中的实际元素保持不变。

如果您想要深拷贝,您必须使用自定义的深拷贝库或自己实现。

关于Scala collection.mutable.Cloneable 目的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11560506/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com