Mat Mat - 1 year ago 101
Ruby Question

Count truthy objects in an array

I'd like to count truthy objects in an array. Since I can pass a block to count, the most idiomatic way I found was this:

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

But I was wondering if there was a better way, especially using the syntax
, because passing a full block here looks like overkill to me.

AFAIK, there is no
method in Ruby, so I couldn't find how to achieve this.

Answer Source

With Ruby >= 2.2 you can use Object#itself:

[1, nil, 'foo', false, true].count(&:itself)
#=> 3
Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download