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が変えるのかわからずに苦労しました。。。
コメントを残す