Ruby Weekly経由。Array()を使ったnilガードを紹介しているGuarding with arraysという記事がナイスでした。
Array()を使ったnilガード
Rubyでのコーディングは常にnilとの戦いなのであります。
例えばparams[:pictures]に配列が入ってくると期待して、こんなコードを書くと、
|
1 2 3 |
params[:pictures].each do |picture_id| # なんか処理がある end |
params[:pictures]がnilのときにエラーになりますよね。なのでこんな風に書いたりするんですが、ちょいダサい。
|
1 2 3 |
(params[:pictures].presence || []).each do |picture_id| # なんか処理がある end |
で、Guarding with arraysで紹介されている方法が、こんな書き方。
|
1 2 3 |
Array(params[:pictures]).each do |picture_id| # なんか処理がある end |
Array()の以下のような性質を活かした方法で、見た目にもArray感があって良い感じです。
|
1 2 3 4 5 |
Array([1,2,3]) # => [1,2,3] Array(nil) # => [] |