Skip over iteration in Enumerable#collect

后端 未结 6 1390
春和景丽
春和景丽 2020-12-12 21:32
(1..4).collect do |x|
  next if x == 3
  x + 1
end # => [2, 3, nil, 5]
    # desired => [2, 3, 5]

If the condition for next is m

6条回答
  •  隐瞒了意图╮
    2020-12-12 22:02

    I would simply call .compact on the resultant array, which removes any instances of nil in an array. If you'd like it to modify the existing array (no reason not to), use .compact!:

    (1..4).collect do |x|
      next if x == 3
      x
    end.compact!
    

提交回复
热议问题