Чтобы посчитать элементы, вам, очевидно, нужно перебрать коллекцию. Поскольку итерация по Hash
приводит к получению двухэлементных Array
s, первые два на самом деле абсолютно одинаковы:
{ 1 => true, 7 => false, 6 => true, 4 => false }.count(&:last)
[[1, true], [7, false], [6, true], [4, false]].count(&:last)
Для простого Array
случая вы можете сделать что-то вроде этого:
[true, false, true, false].count(true)
Этот Array
, конечно, также совпадает с Hash#values
из вашего Hash
выше, поэтому вы можете использовать тот же метод для этого:
{ 1 => true, 7 => false, 6 => true, 4 => false }.values.count(true)
Если вы не знаете, какой из трех вы получите, вы можете использовать что-то вроде этого:
{ 1 => true, 7 => false, 6 => true, 4 => false }.flatten.count(true)
[[1, true], [7, false], [6, true], [4, false]].flatten.count(true)
[true, false, true, false].flatten.count(true)