【发布时间】:2018-12-22 20:34:37
【问题描述】:
我有这个产品列表,我想实现一种方法来根据用户购买的数量更改商品的价格。所以我创建了 3 个产品:
item1 = Item.new("item1", 5.00)
item2 = Item.new("item2", 10.00)
item3 = Item.new("item3", 8.00)
然后我有这样的逻辑,即对于 item2,用户可以以 1 的价格购买 2 个项目,然后对于 item 2,如果用户购买 3 个或更多,则每单位有 1 美元的折扣。
user_input = nil
item_list = []
until user_input == "stop"
puts 'Which item would you like to add? (type "stop" to exit purchase)'
user_input = gets.chomp
if user_input == "item1"
if item_list.count("item1") % 2 == 0
item1.price = 2.5
else
discount_item1 = item_list.count("item1") - 1
item1.price = (discount_item1 * 2.5) + 5.00
end
item_list << item1
end
if user_input == "item2"
if item_list.count("item2") >= 3
tshirt.price = 19.00
else
tshirt.price = 20.00
end
item_list << item2
end
if user_input == "item3"
item_list << item3
end
end
print "Items:"
sum = item_list.inject(0) do |sum, item|
print " #{item.name},"
sum += item.price
end
puts "Total: #{sum}"
显然这个逻辑是行不通的。有人有什么想法吗?我正在考虑做一个类 Checkout ,其中我有一个方法pricing_rules ,它定义了所有价格规则,但不知道如何实现它。
【问题讨论】:
-
您能否通过案例更准确地说明您的条件。这样调试代码会容易得多。
标签: ruby methods instance-variables