Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.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中对类和实例调用.methods_Ruby - Fatal编程技术网

在Ruby中对类和实例调用.methods

在Ruby中对类和实例调用.methods,ruby,Ruby,希望在这里调查集体意识,因为我无法通过搜索找到答案。在Ruby 1.9+中,对实例调用.methods将产生与对该实例的类不同的结果。例如,“foo.”方法将包括“length”和“size”,而String.methods将不包括。这是什么原因?我是一名经验丰富的程序员,但对Ruby还不熟悉。根据我的理解,方法应该包括所有的祖先方法,那么是通过mixin或其他模式将长度和大小添加到实例的列表中,而不是类的列表中吗?长度和大小是字符串实例方法,为什么它们会包括在字符串(类)方法的列表中?类是对象

希望在这里调查集体意识,因为我无法通过搜索找到答案。在Ruby 1.9+中,对实例调用.methods将产生与对该实例的类不同的结果。例如,“foo.”方法将包括“length”和“size”,而String.methods将不包括。这是什么原因?我是一名经验丰富的程序员,但对Ruby还不熟悉。根据我的理解,方法应该包括所有的祖先方法,那么是通过mixin或其他模式将长度和大小添加到实例的列表中,而不是类的列表中吗?

长度和大小是字符串实例方法,为什么它们会包括在字符串(类)方法的列表中?类是对象,有自己的方法

换句话说,您将获得所调用对象支持的方法列表。String是一个类,所以您可以得到它的特定类方法,以及它继承的类方法


字符串实例就是一个实例,所以您可以得到字符串的实例方法,以及它继承的实例方法。

长度和大小都是字符串实例方法,为什么它们会包含在字符串(A类)方法列表中?类是对象,有自己的方法

换句话说,您将获得所调用对象支持的方法列表。String是一个类,所以您可以得到它的特定类方法,以及它继承的类方法


字符串实例是一个实例,因此您可以获得字符串的实例方法以及它继承的实例方法。

您将
.methods()
与它混淆了


第一个将为您提供可以在
String
对象上调用的方法,即
String
类本身作为对象。第二个将为您提供使用
String
类创建的对象的方法,或者您将
方法()
混淆的
字符串的实例


第一个将为您提供可以在
String
对象上调用的方法,即
String
类本身作为对象。第二个将为您提供使用
String
类创建的对象的方法,或者
String

的实例,将一个类视为类的常量对象(不确定这在Ruby中是否是真的,但这个想法无论如何都有效)。那么它应该是有意义的。把一个类看作这个类的一个常量对象(不确定这在Ruby中是不是真的,但是这个想法无论如何都是有效的)。那么它应该是有意义的。