RailsでのHash#sliceとHash#slice!の違い
Hash#slice!がHash#sliceを破壊的にしただけのメソッドだと勘違いしてしばらく悩んだ。
h = { a:1, b:2, c:3, d:4 } h.slice(:c, :d) #=> {:c=>3, :d=>4} h #=> {:a=>1, :b=>2, :c=>3, :d=>4} h.slice!(:c, :d) #=> {:a=>1, :b=>2} h #=> {:c=>3, :d=>4}
- slice : 引数で指定したキーだけを含んだハッシュを返す。非破壊的。
- slice! : レシーバのハッシュについて引数で指定したキー以外を削除し、削除した部分を返す。