【Ruby on Rails】next ifとfilter_map
ループ処理の中のnext ifは指定した条件の場合、処理をスキップする。
以下のコードでは偶数の場合に処理をスキップしているが、暗黙的にnil を返している。
code:ruby
new_arr = arr.map {|x|
next if x.even?
x
}
nilが不要な場合compactで取り除くこともできるけど、filter_mapを使って真であった値の配列を返した方がコードが分かりやすい。
この場合、明示的にfalseを返した方が真の値のみを必要としている意図が伝わりやすい(nilでも結果は変わらないけど)
code:ruby
new_arr = arr.map {|x|
next if x.even?
x
}.compact
new_arr = arr.filter_map {|x|
next false if x.even?
x
}