在ruby中类间使用变量

时间:2014-03-24 16:15:41

标签: ruby class variables

我试图创建一个包含一些实例变量的类,这些变量可以链接到一个单独的类并由其操作。这是我的代码:

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

关于出了什么问题的任何想法?最后,我还想从数量中添加,减去等。我希望如果我弄清楚如何链接名称属性,我可以很容易地为数量做同样的事情。

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"