誰かが私のコードが通っていない理由を理解するのを助けることができたら、私は感謝します。 私はここで議論しました。ネストされたハッシュ操作
カートのアイテム:
{
"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
クーポンに「num:2」と表示されていてもクーポンで割引している理由はわかりません。また、実際にハッシュを期待しているときに、配列の既定値でキーワード引数を宣言しています。 – tadman
はい、私の議論はカートとクーポンの配列の中にハッシュです。 –
この場合、メソッドを 'cart:{}、coupons:{}'として宣言したいかもしれません。 Ruby 2.3のキーワード - arugmentsではなくRuby 1.8のハッシュ表記を使用しているのは奇妙です。一貫性を保つために: 'price:3.0、clearance:true、...' – tadman