嵌套哈希操作

时间:2016-08-09 15:56:25

标签: ruby

如果有人可以帮我弄清楚为什么我的代码没有通过,我将不胜感激。 我在这里给出了论据。

购物车项目:

{
  "AVOCADO" => {:price => 3.0, :clearance => true, :count => 3},
  "KALE"    => {:price => 3.0, :clearance => false, :count => 1}
}

优惠券:

{:item => "AVOCADO", :num => 2, :cost => 5.0}

这需要我回复:

    {
  "AVOCADO" => {:price => 3.0, :clearance => true, :count => 1},
  "KALE"    => {:price => 3.0, :clearance => false, :count => 1},
  "AVOCADO W/COUPON" => {:price => 5.0, :clearance => true, :count => 1},
    }

这是我的代码:

def apply_coupons(cart:[], coupons:[])

  app_coupon = {}
  cart.each do |items|
    items.each do |item_name, value|
      app_coupon[item_name] = value
      coupons.each do |coupon|
        if coupon[:item] == item_name
           app_coupon["#{coupon[:item]} W/COUPON"] = {:price => coupon[:cost], :clearance => value[:clearance], :count => value[:count] / coupon[:num] }
           app_coupon[item_name][:count] -= coupon[:num]
        end
      end
    end
  end
  app_coupon
 end 

1 个答案:

答案 0 :(得分:0)

一个可能的问题..

优惠券:

{:item => "AVOCADO", :num => 2, :cost => 5.0}

...这只是一个哈希,但在您的代码中,您正在做...

coupons.each do |coupon|

...所以你期待一个阵列。你应该拍优惠券:

[{:item => "AVOCADO", :num => 2, :cost => 5.0}]