2017-02-23 158 views
0

Я создал список хеш-продуктов, в котором хранятся элементы и связанные с ним затраты, которые вводятся пользователем.Как ссылаться hash.values ​​создал массив

Я хочу добавить все значения, хранящиеся в этом хеше. Мой первоначальный план состоял в том, чтобы преобразовать их в массив, а затем перейти оттуда.

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 }, но он не работает, так как он не узнает вновь созданный массив.

ответ

1

Попробуйте один

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

В своем коде вы exctracting массив, но вы не используете его.

+0

Yep, который работал! Спасибо, примет это как ответ, как только смогу – Vroryn

+0

Мое удовольствие сэр :) – Ursus

1

В рубина 2.4, вы могли бы просто использовать sum:

puts "subtotal: " 
puts hash.values.sum