もふもふ技術部

RailsのActive SupportのHash拡張をいくつか試してみた


下記にドキュメント化されている(Rails 4.1.1)

http://api.rubyonrails.org/classes/Hash.html

Active SupportのHash拡張のソースコードはこの辺かな。

https://github.com/rails/rails/blob/master/activesupport/lib/active_support/core_ext/hash

Railsアプリケーションのルートでirbを起動して実験しました。
(Active SupportなのでRuby単体では動きません)

破壊的メソッドもありますが割愛してます。

Hash#slice

Hashから指定したキーに合致するもののみのHashを返す

Hash#reverse_merge

通常mergeすると同じキーがあった場合には上書かれてしまうが、reverse_mergeはレシーバ側の値を優先する。

Hash#extract!

引数のキーに合致する値を取り除き、取り除いたHashを返す。破壊的メソッドのみ。

Hash#compact

値が nil のものを削除する。ただし false は削除されない。

nil, false, “” を削除してくれるメソッドってないかな?前に欲しいと思ったときがあった。

Hash#deep_dup

Hashをdeep copyする。Hash#cloneはshallow copyなので、ruby単体では直感的でない実装が必要だった。入れ子になっているHashをコピーしたいときに使いたくなる。

Hash#cloneの場合

Hash#deep_dupの場合

The following two tabs change content below.
原田 敦

原田 敦

日本CAWのエンジニア。もふもふ部の部長。得意分野はRuby on Railsを使った小規模WEBアプリケーションを高速で開発すること。週末の楽しみは一人お菓子パーティー。三度の飯より小動物をもふもふするのが好きです。