Ruby 2.4引入了方法Hash#transform_values
并Hash#transform_values!
具有所需的行为.
h = { 1=>[9, 2, 3, 4], 2=>[6], 3=>[5, 7, 1] } h..transform_values { |e| e.size } #=> {1=>4, 2=>1, 3=>3}
你可以像这样修补哈希类
class Hash def map_values map { |k, v| [k, yield(v)] }.to_h end end p ({1 => [1,1,1,1], 2 => [2], 3 => [3,3,3]}.map_values { |e| e.size })