Ruby元编程问题

Ruby元编程问题,ruby,metaprogramming,Ruby,Metaprogramming,当我从类方法内部调用self.class.instance\u variable\u set(@var,…)时,该变量实际存储在哪里?是在课堂上吗?在那个类的实例上?我似乎找不到以下任何一项: e = Example.new e.instance_variables e.class.class_variables 我甚至尝试过使用(class当您在类定义中调用use\u template时,self就是类Example。当您调用self.class时,它就是Example.class或clas

当我从类方法内部调用
self.class.instance\u variable\u set(@var,…)
时,该变量实际存储在哪里?是在课堂上吗?在那个类的实例上?我似乎找不到以下任何一项:

e = Example.new
e.instance_variables
e.class.class_variables

我甚至尝试过使用
(class当您在类定义中调用
use\u template
时,
self
就是类
Example
。当您调用
self.class
时,它就是
Example.class
class
。您将实例变量定义为类的类

class Class
  p @_template
end
# prints :contact_form

你可能应该只使用
self
而不是
self.class

别忘了类是对象。它们只是对象,有
class
class
。太棒了,现在说得通了。我必须记住,这都是关于
self
的上下文
class Class
  p @_template
end
# prints :contact_form