Ruby 为什么在main中定义一个方法会在Object和main.singleton_类中定义它?
当在顶级执行定义时,我正在检查Ruby中方法的定义位置,结果令人惊讶:Ruby 为什么在main中定义一个方法会在Object和main.singleton_类中定义它?,ruby,methods,eigenclass,Ruby,Methods,Eigenclass,当在顶级执行定义时,我正在检查Ruby中方法的定义位置,结果令人惊讶: def-foo;结束 单身人士阶级!=对象#=>真 self.class==Object#=>true m1=单例_类。实例_方法:foo # => # m2=Object.instance_方法:foo # => # m1==m2#=>真 似乎foo同时在两个类中定义!有什么解释吗?这个问题毫无意义,真的。该方法仅在对象中定义。当然,可以通过singleton类来实现,但在这里没有定义: singleton_class.
def-foo;结束
单身人士阶级!=对象#=>真
self.class==Object#=>true
m1=单例_类。实例_方法:foo
# => #
m2=Object.instance_方法:foo
# => #
m1==m2#=>真
似乎
foo
同时在两个类中定义!有什么解释吗?这个问题毫无意义,真的。该方法仅在对象中定义。当然,可以通过singleton类来实现,但在这里没有定义:
singleton_class.instance_methods(false).grep /foo/ # => []
叹息