Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 为什么在main中定义一个方法会在Object和main.singleton_类中定义它?_Ruby_Methods_Eigenclass - Fatal编程技术网

Ruby 为什么在main中定义一个方法会在Object和main.singleton_类中定义它?

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.

当在顶级执行定义时,我正在检查Ruby中方法的定义位置,结果令人惊讶:

def-foo;结束
单身人士阶级!=对象#=>真
self.class==Object#=>true
m1=单例_类。实例_方法:foo
# => #
m2=Object.instance_方法:foo
# => #
m1==m2#=>真

似乎
foo
同时在两个类中定义!有什么解释吗?

这个问题毫无意义,真的。该方法仅在
对象中定义。当然,可以通过singleton类来实现,但在这里没有定义:

singleton_class.instance_methods(false).grep /foo/  # => []
叹息