有没有单线或更有效的方法来完成这项工作?

Cal*_*vin 1 ruby

给定哈希值,例如:

hash = { "fish" => 2, "cat" => 3, "dog" => 1 }
Run Code Online (Sandbox Code Playgroud)

我需要得到:

  1. 所有值的逗号分隔字符串,例如"2,3,1"
  2. 一个整数,保存值的总和,例如6

我目前的代码:

value_string = hash.map { |k,v| "#{v}"}.join(',')
sum = 0
hash.map { |k,v| sum += v}
Run Code Online (Sandbox Code Playgroud)

Agi*_*gis 9

你可以这样做:

hash.values.join(",") # => "2,3,1"
hash.values.inject(:+) # => 6
Run Code Online (Sandbox Code Playgroud)