在您的第二个示例 Class.superclass.class 中,您调用的是 Module.class。 Module 指的是一个类,Module 类。
AnyClass.superclass.class 将返回 Class,BasicObject.superclass.class 除外
类和实例之间的区别很重要。 BasicObject 是一个类。它是一个扩展 nil 的类,这是一种说它没有超类的奇特方式。它是树的根。 EVERYTHING 是一个对象,这是说一切都是某个类的实例的另一种说法。
字符串示例
"Nathan" is an object.
"Nathan" is an instance of the String class.
"Nathan" is not a class.
"Nathan" has no superclass, because "Nathan" is not a class.
String is an object.
String is an instance of the Class class.
String's superclass is Object.
Object is an object.
Object is an instance of the Class class.
Object's superclass is BasicObject.
BasicObject is an object.
BasicObject is an instance of the Class class
BasicObject's superclass is nil.
nil is an object.
nil is an instance of the NilClass class
nil has no superclass, because it is not a class.
Fixnum 示例
1 is an object.
1 is an instance of the Fixnum class.
1 is not a class.
1 has no superclass, because it is not a class.
Fixnum is an object.
Fixnum is an instance of the Class class.
Fixnum's superclass is Integer.
Integer is an object.
Integer is an instance of the Class class
Integer's superclass is Numeric.
Numeric is an object.
Numeric is an instance of the Class class.
Numeric's superclass is Object.
# everything below here is in the above example.
Object is an object.
Object is an instance of the Class class.
Object's superclass is BasicObject.
BasicObject is an object.
BasicObject is an instance of the Class class
BasicObject's superclass is nil.
nil is an object.
nil is an instance of the NilClass class
nil has no superclass, because it is not a class.
所以,最后:
Class is an object.
Class is an instance of the Class class. # this is probably the most important part.
Class's superclass is Module # 2nd most important part
Module is an object
Module is an instance of the Class class. # 3rd
Module's superclass is Object # 4th
# everything below here is in the above examples.
Object is an object.
Object is an instance of the Class class.
Object's superclass is BasicObject.
BasicObject is an object.
BasicObject is an instance of the Class class
BasicObject's superclass is nil.
nil is an object.
nil is an instance of the NilClass class
nil has no superclass, because it is not a class.
表格形式:
如果你想验证这一切都是真的,你可以在 Ruby 中运行它
"Nathan".is_a?(BasicObject) # => true "Nathan" is an object.
"Nathan".class #=> String "Nathan" is an instance of the String class.
"Nathan".is_a?(Class) #=> false "Nathan" is not a class.
"Nathan".superclass # NoMethodError "Nathan" has no superclass, because "Nathan" is not a class.
String.is_a?(BasicObject) #=> true String is an object.
String.class #=> Class String is an instance of the Class class.
String.superclass #=> Object String's superclass is Object.
Object.is_a?(BasicObject) #=> true Object is an object.
Object.class #=> Class Object is an instance of the Class class.
Object.superclass #=> BasicObject Object's superclass is BasicObject.
BasicObject.is_a?(BasicObject) #=> true BasicObject is an object.
BasicObject.class #=> Class BasicObject is an instance of the Class class
BasicObject.superclass #=> nil BasicObject's superclass is nil.
nil.is_a?(BasicObject) #=> true nil is an object.
nil.class #=> NilClass nil is an instance of the NilClass class
nil.superclass # NoMethodError nil has no superclass, because it is not a class.
从类开始:
Class.is_a?(BasicObject) #=> true Class is an object.
Class.class #=> Class Class is an instance of the Class class. # this is probably the most important part.
Class.superclass #=> Module Class's superclass is Module # 2nd most important part
Module.is_a?(BasicObject) #=> true Module is an object
Module.class #=> Class Module is an instance of the Class class. # 3rd
Module.superclass #=> Object Module's superclass is Object # 4th
Object.is_a?(BasicObject) #=> true Object is an object.
Object.class #=> Class Object is an instance of the Class class.
Object.superclass #=> BasicObject Object's superclass is BasicObject.
BasicObject.is_a?(BasicObject) #=> true BasicObject is an object.
BasicObject.class #=> Class BasicObject is an instance of the Class class
BasicObject.superclass #=> nil BasicObject's superclass is nil.
nil.is_a?(BasicObject) #=> true nil is an object.
nil.class #=> NilClass nil is an instance of the NilClass class
nil.superclass # NoMethodError nil has no superclass, because it is not a class.