给定哈希值,例如:
hash = { "fish" => 2, "cat" => 3, "dog" => 1 }
我需要得到:
我目前的代码:
value_string = hash.map { |k,v| "#{v}"}.join(',')
sum = 0
hash.map { |k,v| sum += v}
答案 0 :(得分:9)
你可以这样做:
hash.values.join(",") # => "2,3,1"
hash.values.inject(:+) # => 6
答案 1 :(得分:0)
这是一个在单次迭代中计算两个值的解决方案(某种 一个衬里 )
r1,r2 = hash.reduce([nil, 0]){|m,(_,v)| [[m[0], v.to_s].compact.join(","),m[-1]+v]}
#=> ["2,3,1", 6]