【发布时间】:2016-02-21 08:09:33
【问题描述】:
使用一个(n 继承的)方法,定义它的接收器/类可以通过这样做来实现:
class A
def foo; end
end
class B < A
end
B.instance_method(:foo).owner # => A
有了一个(n 继承的) 常量,没有instance_method 或method 方法的对应物,所以它并不简单。是否可以实现它定义的类?
class A
Foo = true
end
class B < A
end
B.some_way_to_extract_the_owner_of_constant(:Foo) # => A
【问题讨论】:
-
B::Foo是否已定义? -
由于没有直接的方法,我猜想也没有间接的方法,否则它会被封装在所说的直接方法中。
-
一个技巧是
B.const_defined? :Foo, false和A.const_defined? :Foo, false。我需要弄清楚,如何递归地把所有祖先链起来。