2016-10-10 231 views
4

我想計算數組中的真值對象。因爲我可以通過一個塊來算,我找到了最習慣的方法是這樣的:計算數組中的真值對象

但是,我不知道是否有更好的方法尤其是使用語法count(&:something)因爲路過此地全塊的樣子矯枉過正給我。

AFAIK,在Ruby中沒有truthy?方法,所以我找不到如何實現這個。

+2

只是出於好奇,人們可能會計算''falsey's量[1,無,'foo',false,true] .count(&:!)',並將其從原始數組的大小中減去:) – mudasobwa

回答

12

使用Ruby> = 2.2,你可以使用Object#itself

[1, nil, 'foo', false, true].count(&:itself) 
#=> 3 
+1

Ruby 2.2.0也這樣做... https://ruby-doc.org/core-2.2 .0/Object.html#method-i-itself – lcguida

-1

試試這個:

[1, nil, 'foo', false, true].count(true) 
+0

這隻計算'true'對象。我們的目標是統計所有的真實物體(即'1'和''foo''也應該算在內。) – Mat

+0

你是對的,謝謝 –