hashに対してtryする(hash#fetch、nil#try)
hashから要素を取り出すとき、nilだとエラーとなります。
[1] pry(main)> {}[:nanika] => nil [2] pry(main)> nil[:nanika] NoMethodError: undefined method `[]' for nil:NilClass
そこでtryの登場ですが、hash#fetchは登録キーがないとエラーがはみ出てきます。
[3] pry(main)> {}.try(:fetch, :nanika) KeyError: key not found: :nanika [4] pry(main)> {nanika: 1}.try(:fetch, :nanika) => 1
hash#fetchにはdefaultを渡してあげるとKeyErrorが防げます。
これで、nilに対しても、keyがないときでもエラーが起きません。
[5] pry(main)> {nanika: 1}.try(:fetch, :nanika, 0) => 1 [6] pry(main)> {}.try(:fetch, :nanika, 0) => 0 [7] pry(main)> nil.try(:fetch, :nanika, 0) => nil