2013-02-05 45 views
0

我有一個情況我要處理整個陣列和陣列進行any?操作來檢查的一些元素是否返回false替代任何?該過程完成陣列

例如: 我想打印的所有真值。而且我還需要檢查什麼是數組false

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

上面的示例只打印第一個值(即)true並返回true。但我希望它能夠打印出陣列的所有元素並返回false。有其他方法可以做到嗎?或者同一件事情有任何變化?謝謝:)

+0

抱歉,排字錯誤 – codeit

+0

你能澄清你在問什麼嗎?你說你想打印所有的真值,並且你想要打印數組的所有元素。你的意思是你想要打印所有的元素,而不管它們的真實性如何?如果至少有一個元素是虛假的,或者如果所有元素都是虛假的,你是否一直想要返回false? –

回答

2

要打印的值,這樣做:

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

要查看是否所有的人都truthy,這樣做:

[true, false, true].all? 

爲了做到這兩個,這樣做:

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

或者,您可以將其放入一個迭代中:

[true, false, true].inject(true){|m, n| p(n) && m} 
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 

但是在這兩種情況下,您都需要修改塊以獲得相同的結果。