计算数组中的真实对象

时间:2016-10-10 13:53:49

标签: ruby

我想计算数组中的真实对象。因为我可以通过一个块来计算,我找到的最惯用的方式是:

[1, nil, 'foo', false, true].count { |i| i }
#=> 3

但是我想知道是否有更好的方法,特别是使用语法count(&:something),因为在这里传递一个完整的块对我来说太过分了。

AFAIK,Ruby中没有truthy?方法,所以我找不到如何实现这个。

2 个答案:

答案 0 :(得分:13)

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

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

答案 1 :(得分:-1)

试试这个:

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