rubyのハッシュについて②(要素の変更)
ハッシュの要素の変更をいくつかピックアップします。
delete,reject!,delete_if,clearメソッドなどは基本的に配列の時と同じ振る舞いをします。
shiftメソッドは、配列の時は先頭の要素を取り除きましたが、ハッシュの場合は、ランダムに組み合わせを1つ取り除きます。
①mergeメソッドでハッシュを統合する
h = {"a"=>1,"b"=>2} g = {"c"=>3,"d"=>4} h.merge(g) => {"a"=>1,"b"=>2, "c"=>3,"d"=>4} #キーが重複した場合、引数の値の方が更新され値として返る
同じ振る舞いでmerge!,updateメソッドがあり、どちらも破壊的メソッド。レシーバの値が更新される。
②invertメソッドでキーと値を入れ替える
h = {"a"=>1,"b"=>2} h.invert =>{1=>"a",2=>"b"} #入れ替えの結果、キーが重複したら片方は消滅する
配列で要素の順番を逆にするのは、reverse,reverse!メソッドなので注意です。