地方でリモートワーク

プログラミング、先物、fx,仮想通貨なんでもやります

Rubyのmapで条件分岐をした時にnilが返ってきてしまう時の対処法

スポンサーリンク

f:id:ihatov08:20160926002458j:plain

Rubyのmapメソッドで条件分岐を使う時です。

Rubyのmapメソッドで条件分岐を使うときに、条件に一致しないときに下記のような感じで書くとnilが返ってしまいます。

a = [1,2,3,4,5,6,7,8,9,10]
a = a.map do |i|
  next if i.even?
  i*10
end
p a
#=>[10, nil, 30, nil, 50, nil, 70, nil, 90, nil]

条件に一致しないときに、元の配列の値を返してあげたい場合はブロック変数を与えましょう。

a = [1,2,3,4,5,6,7,8,9,10]
a = a.map do |i|
  next i if i.even?
  i*10
end
p a
#=>[10, 2, 30, 4, 50, 6, 70, 8, 90, 10]

なぜnilが変えるのかわからずに苦労しました。。。