2017-01-19 55 views
0

我正在尝试创建一个响应,允许用户输入清单中的键和值以从已存在的清单中减去。因此,如果在库存开始时有10个苹果,我回应说我卖7个苹果,剩余的哈希应该表示为3个苹果。红宝石哈希:减去数量

我是一个初学者,有点失落,所以任何解释都会有帮助。谢谢!

@inventory = {"apples" => 10, "bananas" => 10, "crackers" => 10, "breads" => 10} 

def sell_inventory 
    puts "What food are we selling today?"  
    product = gets.chomp.downcase   
    puts "How many #{product} are we selling today?"   
    quantity = gets.to_i   
    @inventory.delete(product, quantity)   
end 

回答

4
@inventory = { "apples" => 10, "bananas" => 10, "crackers" => 10, "breads" => 10 } 

def sell_inventory 
    puts "What food are we selling today?" 
    product = gets.chomp.downcase 

    puts "How many #{product} are we selling today?" 
    quantity = gets.to_i 

    if @inventory.key?(product) 
    @inventory[product] -= quantity 
    @inventory[product] = 0 if @inventory[product] < 0 
    else 
    puts "No inventory product: #{product}" 
    end 
end 

起初我检查product是否是库存产品,Hash#key?。否则,我打印一个错误。 然后我减去数量。最后我检查总数量不能是负数。

Hash.delete,您尝试过,将从哈希中删除键值对并返回该值。举例:

@inventory.delete("apples") 
# => 8 
@inventory 
# => {"bananas"=>10, "crackers"=>10, "breads"=>10} 
+0

谢谢Simon Fromme!这很好用! – Ian