【发布时间】:2011-10-26 13:50:28
【问题描述】:
这是问题“Given an instance of a Ruby object, how do I get its metaclass?”的反面
您可以在默认的to_s 输出中看到附加元类或单例类的对象的表示:
s = "hello"
s_meta = class << s; self; end
s_meta.to_s # => "#<Class:#<String:0x15004dd>>"
class C; end
c_meta = class << C; self; end
c_meta.to_s # => "#<Class:C>"
是否可以实现一个方法Class.attached 来返回这个对象(如果接收者是一个普通类,则返回nil)?
s_meta.attached # => s
c_meta.attached # => C
C.attached # => nil
【问题讨论】:
标签: ruby metaprogramming