如何从方法引用对象而不将其作为变量传递?
我收到错误:
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类中使用该变量。
答案 0 :(得分:4)
我真的只想让我的方法在Myclass类中可用。
然后,您应该将其定义为Myclass
的相应范围内的实例变量。就像现在一样,my_object
是一个局部变量,由于范围门而不可见。
class Myclass
@my_object = B.new({d:'d'})
def self.my_method
p @my_object
end
end