我试图创建一个包含一些实例变量的类,这些变量可以链接到一个单独的类并由其操作。这是我的代码:
class Product
attr_accessor :name, :quantity
def initialize(name, quantity)
@name = name
@quantity = quantity
end
end
class Production
def initialize(factory)
@factory = factory
end
def create
"#{@name}: #{@factory}"
end
end
基本上,我希望能够使用Production类中Product类实例的属性。因此,如果A = Product.new(' widget',100),我希望能够将A.name作为生产实例中的变量。为了测试这个,我有:
a = Product.new('widget', 100)
b = Production.new('Building 1')
puts b.create('Building 1')
然而,它返回以下内容:
: Building 1
而不是
widget: Building 1
关于出了什么问题的任何想法?最后,我还想从数量中添加,减去等。我希望如果我弄清楚如何链接名称属性,我可以很容易地为数量做同样的事情。
答案 0 :(得分:0)
首先,您希望在Product
期间生成Production
,因此Production
必须知道Product
。例如,您可以将产品作为参数传递给create
:
class Production
def initialize(factory)
@factory = factory
end
def create(product)
"#{product.name}: #{@factory}"
end
end
product = Product.new('Thingy', 123)
production = Production.new('ACME')
puts production.create(product)
#=> "Thingy: ACME"
或者你可以将它存储在一个实例变量中,如果你需要它在整个Production
类中:
class Production
def initialize(factory, product)
@factory = factory
@product = product
end
def create
"#{@product.name}: #{@factory}"
end
end
product = Product.new('Thingy', 123)
production = Production.new('ACME', product)
puts production.create
#=> "Thingy: ACME"