連想配列(マップ/ハッシュ/ディクショナリ)をコピーするには (clone / copy / dup) 2015/03/03
連想配列(マップ/ハッシュ/ディクショナリ)をコピーする方法。
PHP 2013/11/18
配列を別の変数に代入するだけでコピーになる。しかも deep copy になる。
$src = array('a' => array(10, 20, 30), 'b' => 2, 'c' => 3);
$dst = $src;
$src['a'][0] = 100; // $dst['a'][0] は 10 のまま
Python 2013/10/07
dic2 = dic.copy()
Ruby / JRuby 2014/12/22
shallow copy
Object#clone
Object#dup
shallow copyなので、コピー元の要素のオブジェクト自体を変更した場合は、コピー先にも伝搬する。
hash = {'a' => 10, 'b' => 20, 'c' => [30, 31, 32]}
hash2 = hash.clone
hash['b'] = 21 # 要素の変更はコピー先には影響しない
hash['c'][2] = 320 # 要素のオブジェクト自体の変更はコピー先に影響する
p hash2
# => {"a"=>10, "b"=>20, "c"=>[30, 31, 320]}
Perl 2013/09/11
shallow copy の例
my %src = ...;
my %dst = %src
代入するだけでコピーされる。
JavaScript 2013/04/20
shallow copy
function clone(src){
var dst = {}
for(var k in src){
dst[k] = src[k];
}
return dst;
}
map_copy = map.clone();