【发布时间】:2014-04-24 14:37:04
【问题描述】:
为什么self,在一个单例类上定义的方法(singleton2),不等于其他三种情况下的那个单例类?
class A
def self.singleton1
class << self
self
end
end
class << self
def singleton2
self
end
end
end
def singleton3
class << A
self
end
end
p [A.singleton1, A.singleton1.object_id] # [#<Class:A>, 70003841656620]
p [A.singleton2, A.singleton2.object_id] # [A, 70003841656640]
p [singleton3, singleton3.object_id] # [#<Class:A>, 70003841656620]
p [A.singleton_class, A.singleton_class.object_id] # [#<Class:A>, 70003841656620]
【问题讨论】:
标签: ruby singleton metaprogramming