Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.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对象的信息_Ruby_Object - Fatal编程技术网

关于Ruby对象的信息

关于Ruby对象的信息,ruby,object,Ruby,Object,我需要关于ruby中对象的信息帮助。在控制台中,我看到许多put“Module1”。为什么会这样?为什么我看到这么多“模块1”。我尝试使用以下代码: class Object def method_missing(*args) puts 'Module1' super end end 这与ruby如何查找方法有很大关系。它穿过祖先树两次。第一次查找方法名称,第二次查找method\u missing 大多数对象继承自Obj

我需要关于ruby中对象的信息帮助。在控制台中,我看到许多put“Module1”。为什么会这样?为什么我看到这么多“模块1”。我尝试使用以下代码:

   class Object
      def method_missing(*args)

        puts 'Module1'
        super
      end
    end

这与ruby如何查找方法有很大关系。它穿过祖先树两次。第一次查找方法名称,第二次查找
method\u missing

大多数对象继承自
Object
,因此调用
Object
method\u missing
并不罕见


如果您感兴趣,有很多资源可以更详细地解释这一点

您可以使用更具信息性的输出替换
put'Module1'
,例如打印以查看哪个类或方法调用
method\u missing
(可能是IRB)。旁注:重新定义
对象\method\u missing
,特别是使用错误的签名,这是一个非常糟糕的主意。另外:如果
对象
没有定义的方法,
super
可能不会有多大帮助。你看到这么多的“Module1”是因为你使用的是IRB或PRY,而这些并不完全是Ruby。