孫までディープコピー
あるObjectとArrayとVectorを孫までディープコピーする必要があったのでてすてす。
Object
var t : Object = { a : { b : "c" }}; var u : Object = ObjectUtil.copy(t); t["a"]["b"] = "d"; trace(t["a"]["b"]); trace(u["a"]["b"]); d c
はいおっけー
Array
var v : Array = [ { b : "c" } ]; var w : Array = v.concat(); v[0]["b"] = "d"; trace(v[0]["b"]); trace(w[0]["b"]); d d
アッー!ちょっと考える。
var v : Array = [ { b : "c" } ]; var w : Array = ArrayUtil.toArray(ObjectUtil.copy(v)); v[0]["b"] = "d"; trace(v[0]["b"]); trace(w[0]["b"]); d c
いえーい。ってこれVectorに使えるのか?VectorUtilなんてないので適当に
Vector
var x : Vector.<Object> = Vector.<Object>([ { b : "c" } ]); var y : Vector.<Object> = Vector.<Object>(ObjectUtil.copy(x)); x[0]["b"] = "d"; trace(x[0]["b"]); trace(y[0]["b"]); d c
あやしー
おまけ
一応・・
var t : Object = { z : {a : { b : "c" }}}; var u : Object = ObjectUtil.copy(t); t["z"]["a"]["b"] = "d"; trace(t["z"]["a"]["b"]); trace(u["z"]["a"]["b"]); d c
ですよねー