【问题标题】:How to clone objects in Scala?如何在 Scala 中克隆对象?
【发布时间】:2011-09-19 00:50:03
【问题描述】:

最近在复制复杂对象时遇到了一些问题。它的内部组织是由几个嵌套的对象组成的。我注意到clone() 不可用。

解决问题的最佳方案是什么?

【问题讨论】:

  • 哪个对象?它是什么有很大的不同。也许有一个简单的方法,也许有一个艰难的方法,也许根本没有办法(这可能是有充分理由的!)。
  • 通常最好的解决方案是以完全避免克隆的方式设计您的程序。 Scala 对不可变数据结构的良好支持使这变得特别容易。
  • 请注意,如果您的对象是案例类,则编译器会生成一个复制方法,该方法允许完整复制以及通过命名参数仅覆盖某些字段。

标签: scala clone


【解决方案1】:

如果该复杂对象是可变的或包含可变部分,则解决方案与 Java 中的相同。检查有关它的 Java 问题和帖子,然后这样做。

如果一切都是不可变的,那么你不需要也不应该克隆任何东西。最好的情况是,您应该制作对象的浅层副本,只更改需要更改的字段,最坏的情况是,您使用镜头或拉链之类的东西来复制一些深层对象并将更改向上传播。请参阅 Scala 上有关镜头和拉链的问题。

【讨论】:

    【解决方案2】:

    我在这里获得了一个用于克隆可变状态对象的示例代码:Implementing '.clone' in Scala

    【讨论】:

      猜你喜欢
      • 2018-08-09
      • 1970-01-01
      • 1970-01-01
      • 2010-11-08
      • 2012-11-17
      • 2010-09-07
      • 2012-12-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多