Effective Ruby: 項目2 nilオブジェクトのNoMethodError対策
セクションごとに記事を書いていくつもりはなかったのですが、良いこと書いているなと思ったので。
項目2 オブジェクトを扱うときにはnilかもしれないということを忘れないようにしよう
nilオブジェクトのNoMethodErrorに出くわすことはしばしばありますが、その対策について。
明示的な変換であるto_a、to_iやArray#compactについて。
def fix_title(title) title.to_s.capitalize end >> nil.to_a => [] >> nil.to_i => 0 >> nil.to_f => 0.0 name = [first, middle, last].compact.join("")
個人的には以下のようにmatchの結果を取り出す際に利用していたりいます。
text.match(/some_regexp/).to_a[1])
覚えておくべき事項
- Rubyの型システムの構造上、全てのオブジェクトがnilになり得る。
nil?メソッドは、レシーバがnilならtrue、そうでなければfalseを返す。- 適切なら、
to_s、to_iなどの変換メソッドを使ってnilオブジェクトを強制的に型変換しよう。 - Array#compactメソッドは、レシーバーのコピーからすべてのnil要素を取り除いた形を返す。

- 作者: Peter J. Jones,arton,長尾高弘
- 出版社/メーカー: 翔泳社
- 発売日: 2015/01/09
- メディア: 大型本
- この商品を含むブログ (13件) を見る