求和散列值Ruby

求和散列值Ruby,ruby,Ruby,我有一个哈希数组 players = [{:id=>1, :name=>"Alda", :dice_count=>5, :hand=>[6, 5, 2, 4, 3]}, {:id=>2, :name=>"Gonzalo", :dice_count=>5, :hand=>[1, 5, 1, 1]}, {:id=>3, :name=>"Markus", :dice_count=>5, :hand=>[6, 2, 5, 1]

我有一个哈希数组

players =  [{:id=>1, :name=>"Alda", :dice_count=>5, :hand=>[6, 5, 2, 4, 3]},
 {:id=>2, :name=>"Gonzalo", :dice_count=>5, :hand=>[1, 5, 1, 1]},
 {:id=>3, :name=>"Markus", :dice_count=>5, :hand=>[6, 2, 5, 1]},
 {:id=>4, :name=>"Luella", :dice_count=>5, :hand=>[4, 5, 1, 6, 5]}]
我想对数组中每个
:hand
值的大小求和。有没有一个简单的方法可以做到这一点


因此,输出将是每个
:hand.size
的总和。在上述情况下,输出将是
18

这个只是为了好玩,假设
hand
始终是散列中的最后一个元素

players.map { |player| player[:hand].size }.reduce(:+) # => 18
p players.map(&:flatten).map(&:last).map(&:size).reduce(:+)

单程解决方案:

players.inject(0) { | a, e | a + e[:hand].size } 
# => 18
注意
inject
只是
reduce
的另一个名称