任何替代?哪个进程完成数组

时间:2013-02-05 07:39:12

标签: ruby-on-rails ruby

我遇到了一种情况,我希望处理整个数组并对数组执行any?操作,以检查某些元素是否返回false

例如: 我想打印所有真值。我还想检查数组中的false是什么:

def hel? 
  [true, false, true].any?{|x| p x; x}
end

以上示例仅打印第一个值(即)true并返回true。但我希望它打印数组的所有元素并返回false。还有其他方法吗?或同样的事情有什么变化?谢谢:))

2 个答案:

答案 0 :(得分:2)

要打印值,请执行以下操作:

[true, false, true].each(&method(:p))

要查看是否所有这些都是真实的,请执行以下操作:

[true, false, true].all?

为了做到这两点,请执行以下操作:

[true, false, true].each(&method(:p)).all?

或者,你可以把它放到一个迭代中:

[true, false, true].inject(true){|m, n| p(n) && m}

答案 1 :(得分:0)

如果要迭代数组,可以使用Enumerable#each,但不会返回布尔值:

def hel?
  [true, false, true].each{|x| p x; x}
end

如果要检查所有元素,可以使用Enumerable#all?

def hel?
  [true, false, true].all?{|x| p x; x}
end

但在这两种情况下,您都需要修改您的块以获得相同的结果。