好吧,我问了两个问题,并将每个用户的输入放到单独的哈希中。我正在使用循环来遍历多次,然后将所有哈希添加到数组中。我的问题是/我困在哪里,如何将每个哈希的值之和分配给它们自己的单独哈希。
这是我的代码:
arr:[]
(1..n).each do |i|
hash=Hash.new()
puts "Please input a value for day # #{i}"
hash["day1"]=gets.chomp.to_f
puts "Please input a value for day # #{i}"
hash["day2"]=gets.chomp.to_f
arr << hash
end
我想这样做,因为这是我一直在使用的用于收集用户输入并将其放入哈希表的方法,但是它不起作用:/
hash[:total]= hash.each_value.inject(:+)
我基本上是想将每个哈希加起来,并放入一个新的哈希中。那有可能吗?这是很难的原因,我将不得不在代码块之外执行此操作,但随后系统将无法识别变量:/
您可以尝试使用Hash#reduce
的Hash#merge
方法
arr = []
3.times do |i|
hash = Hash.new()
puts "Please input a value for day # #{i}"
hash["day1"] = gets.chomp.to_f
puts "Please input a value for day # #{i}"
hash["day2"] = gets.chomp.to_f
arr << hash
end
totals = arr.reduce({}) do |sums, day|
sums.merge(day) { |_, a, b| a + b }
end
puts totals
# {"day1"=>8.0, "day2"=>11.0}