我想将新创建的Person
实例存储在类变量objects
中,但不确定如何从构造函数中引用当前实例。
class Person
@@objects = {}
def initialize(key)
@@objects[key] = something
end
理想情况下,结果是能够通过Person
Person.objects
个对象的字典
答案 0 :(得分:1)
简单地说,在构造函数中,self
将引用当前实例。
class Person
@@objects = {}
def initialize(key)
@@objects[key] = self
puts self # it will print the id of the current instance
end
end
同样,如果你在类方法中编写self
,它将引用该类。
但是从您的问题来看,您似乎正在执行类似Person.objects
的操作,但它无效,并将输出以下行:
NoMethodError: undefined method `objects' for Person:Class
因此,您需要为其编写类方法,让外界访问objects
。
def self.objects
@@objects
end
嗯,还有其他方法可以访问类变量,请看一下question。