引用对象,而不传入新对象

时间:2013-06-28 11:35:33

标签: ruby

如何从方法引用对象而不将其作为变量传递?

我收到错误:

NameError: undefined local variable or method ‘my_object’ for Myclass:Class

class B 
  attr_accessor :somethings

  include Enumerable  

  def initialize(*values)
    self.somethings = []
  end
end

my_object = B.new({d:'d'})

class Myclass

  def self.my_method
     p my_object
  end
end


Run: Myclass.my_method

我不想为我的所有方法做的是......

  def self.my_method(my_object)
     p my_object
  end

我还可以使用全局变量来解决问题

$my_object = B.new({d:'d'})

但是,我真的只想让我的方法可以在Myclass类中使用该变量。

1 个答案:

答案 0 :(得分:4)

  

我真的只想让我的方法在Myclass类中可用。

然后,您应该将其定义为Myclass的相应范围内的实例变量。就像现在一样,my_object是一个局部变量,由于范围门而不可见。

class Myclass
  @my_object = B.new({d:'d'})

  def self.my_method
     p @my_object
  end
end