Ruby のハッシュで値が nil の要素を削除して新しいハッシュを返す

スポンサーリンク

Ruby や Rails は、API(メソッド)を知らなくても、オブジェクトに対してそれっぽい操作を適当に書いても、結構動いたりしてくれるからその点はとても楽しいし助かります。

【お知らせ】 英単語を画像イメージで楽に暗記できる辞書サイトを作りました。英語学習中の方は、ぜひご利用ください!
画像付き英語辞書 Imagict | 英単語をイメージで暗記
【開発記録】
英単語を画像イメージで暗記できる英語辞書サービスを作って公開しました
スポンサーリンク

Hash#compact, Hash#compact! はなかった

昨日書いたコードで、値を nil で初期化してある複数の要素からなるハッシュを操作した後、値が nil のままの要素を削除して新しいハッシュを返すようにしたくて、以下のような処理を書いた。Array#compact, compact! はよく使うので、Hash#compact, compact! もあるかな〜と考えまして。

しかし今回は、NoMethodError で残念。なので delete_if を使って書きました。

delete_if は !(エクスクラメーション)付いてないけど、レシーバ自身を変更する破壊的メソッド。

Hash クラスを拡張して compact, compact! を定義

Ruby はオープンクラスなので、Hash#compact, compact! を定義することもできる。とりあえず簡易的なやつ。

組み込み Hash クラスをオープンして、Hash#compact!, Hash#compact の2つのメソッドを追加しました。compact のほうは self を変更しないようにしています。

色々自由で Ruby すごい。

スポンサーリンク
私は以下の本で Ruby を覚えました。メタプログラミングRubyは入門を超える内容で難しめです。
 
スポンサーリンク

Leave Your Message!