选择列表匹配条件

时间:2015-10-14 09:37:28

标签: ruby

假设我应该找到7和9的倍数之和到255的限制,这就是我所做的:

(0..255).select do |i|
  i % 7 == 0 || i % 9 == 0
end.inject(:+)

我想删除神奇的数字并让方法更通用:

divisors = [7,9,13]

(0..255).select do |i|
  divisors.each do |d|
    i % d == 0
  end
end.inject(:+)

这样做的惯用方法是什么?

1 个答案:

答案 0 :(得分:2)

使用Array#mapEnumerable#any?

divisables.map do |d|
  i % d == 0
end.any?

HTH

编辑:或者,正如@undur_gongor所说,您也可以使用any?之类的

divisables.any? { |d| i % d == 0 }