問題
正規表現でキャプチャを使うと。
マッチした値をハッシュで後方参照できる。
'Welcome to DIRTY House.'.match(/(?<match>DIRTY)/)[:match]
# => "DIRTY"
しかしマッチしなかった場合には NoMethodError が起きてしまう。
'Welcome to DIRTY House.'.match(/(?<match>CLEAN)/)[:match]
# => NoMethodError: undefined method `[]' for nil:NilClass
解決
対策として、 何も見つからなかった場合は ||
で空の配列を代入する。
('Welcome to DIRTY House.'.match(/(?<match>CLEAN)/) || {})[:match]
# => nil
NoMethodError ではなく nil が返るようになった。
環境
- Ruby 2.0.0
チャットメンバー募集
何か質問、悩み事、相談などあればLINEオープンチャットもご利用ください。
メンター受付