我需要一些帮助来理解下面的ruby代码。
counted = Hash.new(0)
parsed_reponse["result"]["data"].each { |h| counted[h["version"]] += 1 }
counted = Hash[counted.map {|k,v| [k,v.to_s] }]
答案 0 :(得分:1)
您的最后一行只是将所有值转换为String:
Hash[{a: 2, b: 3}.map {|k, v| [k, v.to_s]}]
#=> {:a=>"2", :b=>"3"}
我会将其重构为:
counted.transform_values!(&:to_s) # for ruby >= 2.4
#=> {:a=>"1", :b=>"2"}
或旧版本:
counted.each { |k, v| counted[k] = v.to_s }
由于:
counted.map {|k,v| [k,v.to_s] }
- 创建新的数组数组Hash[result]
- 从result
数组创建新的Hash对象。这两个步骤都是多余的,您只需修改现有的哈希值即可。