我有Shop课程,我想一次添加多个项目。 我想要这个:
shop1 = Shop.new
product1 = Product.new("Dress", 50)
shop1.add_products(product1, 5)
将5件衣服添加到仓库
def add(product, qty)
@products << product * qty
end
所以稍后我可以使用
@products.select{|p| p.name == "Dress"}.count
并得到5.有可能吗?
答案 0 :(得分:3)
你可以做这样的事情
def add(product, qty)
@products.concat([product] * qty)
end
或更少&#34;聪明&#34;
def add(product, qty)
qty.times { @products << product }
end
答案 1 :(得分:3)
我认为最简单的方法是:
def add(product, qty)
@products += [product] * qty
end
但这完全取决于你的语法偏好。
答案 2 :(得分:1)
以前的答案都可以解决您的问题。但是,也许您应该考虑使用哈希而不是数组。
这样的事情:
class Product
@@products = Hash.new(0)
def initialize(product, qty)
@@products[product] = qty
end
def increase_stock(product, qty)
@@products[product] += qty
end
def decrease_stock(product, qty)
@@products[product] -= qty
end
def count_stock(product)
@@products[product]
end
end
p = Product.new('Dress',5)
p.count_stock('Dress')
=> 5
p.increase_stock('Dress',10)
p.count_stock('Dress')
=> 15
p.decrease_stock('Dress',2)
p.count_stock('Dress')
=> 13
在我的GitHub中,有一个simple command-line inventory management app written in Ruby。可能有用..