セクションごとに記事を書いていくつもりはなかったのですが、良いこと書いているなと思ったので。
項目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件) を見る