Я пытаюсь создать очень простую корзину для покупок Ruby, и мне нужно дать скидки, если пользователь покупает определенные комбинации товаров. Они указаны в @costs - если объем является истинным, пользователь получает скидку (из: bulk_price) для покупки: bulk_num товаров. У меня есть основные обвинения, но теперь мне нужно вычитать скидки в определенных случаях. Вот то, что я до сих пор:Как предоставить скидки в простой корзине Ruby?
class Cart
attr_accessor :total, :costs, :item_array, :subtotal
def initialize
@item_array=[]
@subtotal=0
@costs= [{"A"=>{:price=>2, :bulk=>true, :bulk_num=>4, :bulk_price=>7}}, {"B"=>{:price=>12, :bulk=> false}},{"C"=>{:price=>1.25,:bulk=>true, :bulk_num=>6, :bulk_price=>6}}, {"D"=>{:price=>0.15, :bulk=>false}}]
end
def scan(*items)
items.each do |item|
@item_array<<item
@costs.each do |cost|
if cost.has_key?(item)
@subtotal+=cost[item][:price]
end
end
@subtotal
end
end
def total
end
end
Теперь я создал массив, чтобы отслеживать, какие элементы приобрели, и я бы в идеале хотел бы иметь полную функцию проверку массива и вычесть из итога если нужно. Может быть, я слишком долго смотрел на это, но мне трудно понять это. Может ли кто-нибудь помочь?
Его не ясно, что ваш вопрос. – Zach
Я не могу понять, как фактор скидки. Некоторые предметы дисконтируются - например, A составляет 1 доллар США, если вы покупаете 4 из них, но B никогда не дисконтируется. – USK
Я уверен, что эта тема будет закрыта, потому что у вас нет другого вопроса, кроме «не могли бы вы помочь мне исправить мой код?», Но мне кажется, что предметы должны иметь свойство «скидка». Когда вы вычисляете общее количество, вы проверяете, есть ли у товара скидка, а затем примените его. – Zach