Arrays Ruby,一次向数组添加多个对象
我有Shop类,我想一次添加多个项目。 我想要这个:Arrays Ruby,一次向数组添加多个对象,arrays,ruby,Arrays,Ruby,我有Shop类,我想一次添加多个项目。 我想要这个: shop1 = Shop.new product1 = Product.new("Dress", 50) shop1.add_products(product1, 5) 向仓库添加5件连衣裙 def add(product, qty) @products << product * qty end 得到5分。有可能吗?你可以这样做 def add(product, qty) @products.concat([produ
shop1 = Shop.new
product1 = Product.new("Dress", 50)
shop1.add_products(product1, 5)
向仓库添加5件连衣裙
def add(product, qty)
@products << product * qty
end
得到5分。有可能吗?你可以这样做
def add(product, qty)
@products.concat([product] * qty)
end
或者更不“聪明”
def添加(产品、数量)
qty.times{@products我认为最简单的方法是:
def add(product, qty)
@products += [product] * qty
end
<>但是这都归结于你的语法偏好。 < P>这两个先前的答案都会解决你的问题。但是,也许你应该考虑用一个哈希代替一个数组。
大概是这样的:
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中,有一个.可能很有用.与concat
版本的不同之处在于,此版本创建了一个新数组,而不是添加到现有数组中。它们都是有效的方法。我进行了就地编辑,因为OP也这样做。不过,请小心:在执行[项目]时*3
,您将获得一个包含对同一项目的三个引用的数组,而不是三个项目。更改其中任何一个都将影响所有数组项目。
def add(product, qty)
@products += [product] * qty
end
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