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