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 count(&:something)
, because passing a full block here looks like overkill to me.
AFAIK, there is no truthy?
method in Ruby, so I couldn't find how to achieve this.
With Ruby >= 2.2 you can use Object#itself
:
[1, nil, 'foo', false, true].count(&:itself)
#=> 3
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With