-2

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

我收到错误:

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 类中的方法。

4

1 回答 1

4

我只想让变量可用于 Myclass 类中的方法。

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

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

  def self.my_method
     p @my_object
  end
end
于 2013-06-28T12:45:23.633 回答