为了进行等效于Python列表的理解,我正在做以下事情:

some_array.select{|x| x % 2 == 0 }.collect{|x| x * 3}

是否有更好的方法来执行此操作……也许只用一个方法调用?

最佳答案

如果确实需要,可以创建一个像这样的Array#comprehend方法:

class Array
  def comprehend(&block)
    return self if block.nil?
    self.collect(&block).compact
  end
end

some_array = [1, 2, 3, 4, 5, 6]
new_array = some_array.comprehend {|x| x * 3 if x % 2 == 0}
puts new_array

打印品:
6
12
18

我可能会按照您的方式来做。

09-11 19:25