0

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

例如:我想打印所有真值。而且我还想检查false数组中的任何内容:

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

上面的例子将只打印第一个值(即)true并返回true。但我希望它打印数组的所有元素并返回false。还有其他方法吗?或同一件事的任何变化?谢谢 :)

4

2 回答 2

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}
于 2013-02-05T08:12:16.290 回答
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

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

于 2013-02-05T07:41:46.627 回答