我遇到了一种情况,我想处理整个数组并对数组执行any?
操作以检查某些元素是否返回false
例如:我想打印所有真值。而且我还想检查false
数组中的任何内容:
def hel?
[true, false, true].any?{|x| p x; x}
end
上面的例子将只打印第一个值(即)true
并返回true
。但我希望它打印数组的所有元素并返回false
。还有其他方法吗?或同一件事的任何变化?谢谢 :)
我遇到了一种情况,我想处理整个数组并对数组执行any?
操作以检查某些元素是否返回false
例如:我想打印所有真值。而且我还想检查false
数组中的任何内容:
def hel?
[true, false, true].any?{|x| p x; x}
end
上面的例子将只打印第一个值(即)true
并返回true
。但我希望它打印数组的所有元素并返回false
。还有其他方法吗?或同一件事的任何变化?谢谢 :)
要打印值,请执行以下操作:
[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}
如果你想遍历你可以使用的数组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
但在这两种情况下,您都需要修改您的块以获得相同的结果。