Ruby 类是一个模块?

Ruby 类是一个模块?,ruby,Ruby,irb的一些有趣的输出: irb(main):001:0> Class.ancestors => [Class, Module, Object, Kernel, BasicObject] irb(main):002:0> class Foo irb(main):003:1> end => nil irb(main):004:0> module Foo irb(main):005:1> end TypeError: Foo is not a module

irb的一些有趣的输出:

irb(main):001:0> Class.ancestors
=> [Class, Module, Object, Kernel, BasicObject]
irb(main):002:0> class Foo
irb(main):003:1> end
=> nil
irb(main):004:0> module Foo
irb(main):005:1> end
TypeError: Foo is not a module
        from (irb):4
        from D:/Ruby193/bin/irb:12:in '<main>'
irb(main):006:0> Foo.is_a? Module
=> true
irb(main):001:0>Class
=>[类、模块、对象、内核、基本对象]
irb(主要):002:0>Foo类
irb(主):003:1>结束
=>零
irb(主):004:0>模块Foo
irb(主):005:1>结束
TypeError:Foo不是模块
来自(irb):4
从D:/Ruby193/bin/irb:12:in''
irb(main):006:0>Foo.is__a?模块
=>正确

根据类的定义,类是可以实例化的派生模块。但irb告诉我们,有时它是一个模块,有时它不是…

这里的问题是您创建了一个
Foo
),现在正试图将其重新定义为
模块
。不管类和模块的继承是什么,都不能将一个更改为另一个,也不能在它们之间“转换”

这里的问题是,您已经创建了一个
Foo
),现在正试图将其重新定义为
模块
。不管类和模块的继承如何,都不能将一个更改为另一个,也不能在它们之间进行“转换”

表达式
Foo.is\a?Class
还返回
true
,因为
是a吗?
不仅当Class是对象的类时,而且当Class是对象中包含的对象或模块的超类之一时,都返回true。

表达式
Foo.is\u a?Class
还返回
true
,因为
是一个吗?
不仅当Class是对象的类时,而且当Class是对象中包含的对象或模块的超类之一时,都返回true。

我只是觉得这样说很有趣;)我只是觉得它说的方式很有趣;)