2016-10-10 230 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

你是对的,谢谢 –