Ruby中的列表怎么理解

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (21)

为了做到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

用户回答回答于

这样试试:

some_array.map {|x| x % 2 == 0 ? x * 3 : nil}.compact

比你的版本快15%...

扫码关注云+社区