可変のScalaオブジェクトを深く複製(コピー)する最も簡単な方法は何ですか?
9660 次
2 に答える
15
Scalaオブジェクトをディープコピーする最も簡単な方法が必要であり、最速ではないため、オブジェクトがシリアル化可能であれば、いつでもオブジェクトをシリアル化してから、逆シリアル化することができます。次のコードは、REPLではなく、コンパイル時にのみ実行されます。
def deepCopy[A](a: A)(implicit m: reflect.Manifest[A]): A =
util.Marshal.load[A](util.Marshal.dump(a))
val o1 = new Something(...) // "Something" has to be serializable
val o2 = deepCopy(o1)
于 2009-08-13T09:19:57.123 に答える
7
Java 固有のソリューション (Scala でもうまく機能するはずです) はCloner ライブラリです。高速で簡単で、フィールドに基づいてオブジェクトを深く複製し (リフレクションを使用)、既知の不変オブジェクト (文字列、整数など) を複製しないほどスマートです。最後に、カスタムの不変オブジェクトを登録して、複製しないようにすることができます。
強くお勧めします。
于 2009-08-12T17:10:42.560 に答える