Hi Everyone,
Good Day,
a=[ ‘casual’,‘sick’,‘casual’,‘sick’,‘casual’,‘sick’,‘casual’,‘sick’ ]
I need to collect casual’s count and sick’s count like,
Caual :4
Sick :4
Thank you,
Hi Everyone,
Good Day,
a=[ ‘casual’,‘sick’,‘casual’,‘sick’,‘casual’,‘sick’,‘casual’,‘sick’ ]
I need to collect casual’s count and sick’s count like,
Caual :4
Sick :4
Thank you,
we can use a.count(“casual”) and viceversa.
thanks
I tend to use a method like:
module Enumerable
def count_by
counts = Hash.new(0)
each {|e| counts[block_given? ? yield(e) : e] += 1}
counts
end
end
$ irb -r ./enumerable
irb1.9.3> a=[ ‘casual’,‘sick’,‘casual’,‘sick’,‘casual’,‘sick’,‘casual’,‘sick’ ]
#1.9.3 => [“casual”, “sick”, “casual”, “sick”, “casual”, “sick”, “casual”, “sick”]
irb1.9.3> a.count_by
#1.9.3 => {“casual”=>4, “sick”=>4}
This keeps you from iterating over the source multiple times, too.
-Rob
Please do not teach people to monkey patch a class directly, if you plan to play dirty and reopen a class be nice enough to make your own module and then send(:include, MyModuleExt) so that people know where it is coming from easily, rather than leaving people in the dark as to what the hell is going on when they start looking for the method in the stdlib docs.