Ich würde mich freuen, wenn mir jemand helfen kann herauszufinden, warum mein Code nicht weitergegeben wird. Ich habe hier Argumente gegeben.Verschachtelte Hash-Manipulation
Warenkorb Artikel:
{
"AVOCADO" => {:price => 3.0, :clearance => true, :count => 3},
"KALE" => {:price => 3.0, :clearance => false, :count => 1}
}
Coupons:
{:item => "AVOCADO", :num => 2, :cost => 5.0}
Es erfordert mich dies zurück:
{
"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},
}
Hier ist mein Code:
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
Es ist nicht klar, warum dein Coupon 'num: 2' hat und du nur einen mit einem Coupon diskontiert hast. Sie deklarieren auch Schlüsselwortargumente mit Array-Standardwerten, wenn Sie tatsächlich einen Hash erwarten. – tadman
Ja, meine Argumente sind Hashes innerhalb des Cart & Coupons Array. –
Vielleicht möchten Sie die Methode als 'cart: {}, Coupons: {}' deklarieren, wenn das der Fall ist. Es ist merkwürdig, dass Sie Ruby 2.3-Schlüsselworte verwenden, aber Ruby 1.8-Hash-Notation. Für Konsistenz: 'Preis: 3.0, Abstand: wahr, ...' – tadman