如何引用hash.values创建的数组

时间:2017-02-23 09:55:27

标签: arrays ruby hash

我创建了一个杂货清单,用于存储用户输入的项目和与之相关的成本。

我想添加存储在此哈希中的所有值。我最初的计划是将它们转换成数组,然后从那里开始。

hash = {}
entry = " "

while entry != "q"
  print "Enter your item: "
  item = gets.chomp

  print "Enter the associated cost: "
  cost = gets.chomp.to_f

  print "Press any key to continue or 'q' to quit: "
  entry = gets.chomp

  hash[item] = cost  
end

puts "Receipt: "
puts "----------"

hash.each do |k,v|
  puts "#{k} costs $#{v}"
end

puts "----------"
puts "subtotal: "
hash.values

如何引用由hash.values生成的新创建的数组?

我尝试array.inject(0){|sum,x| sum + x },但它不起作用,因为它无法识别新创建的数组。

2 个答案:

答案 0 :(得分:1)

试试这个

subtotal = hash.values.inject(0, :+)
puts subtotal

在您的代码中,您正在使用数组,但您没有使用它。

答案 1 :(得分:1)

从Ruby 2.4开始,你可以使用sum

puts "subtotal: "
puts hash.values.sum