当在顶层执行定义时,我正在检查在 Ruby 中定义方法的位置,结果令人惊讶:
def foo; end
singleton_class != Object # => true
self.class == Object # => true
m1 = singleton_class.instance_method :foo
# => #<UnboundMethod: Object#foo>
m2 = Object.instance_method :foo
# => #<UnboundMethod: Object#foo>
m1 == m2 # => true
它似乎foo
同时定义在两个类中!有什么解释吗?