NilClass-Ruby继承到底意味着什么?
新手问题 我认为“继承”是Ruby的基本特性。每个类都从其NilClass-Ruby继承到底意味着什么?,ruby,inheritance,syntax,Ruby,Inheritance,Syntax,新手问题 我认为“继承”是Ruby的基本特性。每个类都从其.class和.superclass继承方法 由于NilClass将Class和Object作为它的.Class和.superclass,您可以假设NilClass拥有它们的所有方法 当我看到这个时,我的大脑爆炸了: >NilClass.class =>类 >>NilClass.class.methods-NilClass.methods =>[:嵌套,:新建] >>幂零类超类 =>对象 >>NilClass.superclass.met
.class
和.superclass
继承方法
由于NilClass
将Class
和Object
作为它的.Class
和.superclass
,您可以假设NilClass
拥有它们的所有方法
当我看到这个时,我的大脑爆炸了:
>NilClass.class
=>类
>>NilClass.class.methods-NilClass.methods
=>[:嵌套,:新建]
>>幂零类超类
=>对象
>>NilClass.superclass.methods-NilClass.methods
=>[:新的]
发生了什么事
有人能解释一下Ruby中整个继承机制背后到底发生了什么吗
继承在Ruby中到底意味着什么
我认为“继承”是Ruby的基本特性。每个类都从其.class
和.superclass
继承方法
没错。每个类都从其超类继承方法,默认情况下超类是Object
class Foo
end
Foo.superclass #=> Object
Foo
响应Object
的类方法,Foo
实例响应Object
的实例方法
此外,每个类都是class
的实例,因此响应class
”实例方法(就像Foo
实例响应Foo
的实例方法一样):
在纯Ruby中也可以这样做:
Foo.singleton_class.send(:undef_method, :new)
Foo.new
#=> NoMethodError: undefined method `new' for Foo:Class
这其中哪一点令人惊讶呢?
NilClass
并没有Class
或Object
的所有方法,即使它们是类和超类?你可能想看Dave Thomas的讲座,题目是,。非常感谢!这才是真正让我讨厌的东西:-)
Foo.singleton_class.send(:undef_method, :new)
Foo.new
#=> NoMethodError: undefined method `new' for Foo:Class