Буду признателен, если кто-то поможет мне понять, почему мой код не проходит. Здесь я приводил аргументы.Вложенные манипуляции с хешем
корзину товар:
{
"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. –
Возможно, вы захотите объявить метод как 'cart: {}, coupons: {}', если это так. Странно, что вы используете Ruby 2.3 ключевое слово-редуцирование, но обозначение хеша Ruby 1.8. Для согласованности: 'цена: 3.0, оформление: истинно, ...' – tadman