我正在阅读《Ruby元编程》
这是一本非常优秀的书。它涉及到了一些其他书籍没有提到的内容。
我有几个具体的问题,涉及到对象(我在前几章):
我知道RubyGems gem将方法'gem'安装到了模块Kernel中,以便该方法在每个对象上都可以使用。为什么它没有被放入Object类中呢?
他谈到了当Ruby查找方法时,它总是向右再向上查找。那么'up'到底是什么意思?我在图表中看到了它,只是我不太理解'up'的目的。作者没有对此进行解释。
Object类的作用是什么?为什么这些方法不能直接放置在Class中?如果每个对象都属于一个类(即使它是Class),那么object、basicobject和kernel的作用是什么?
String、Array等显然是Class的实例。而Class本身也是它自己的一个实例。既然Class是Class的实例......它怎么也能继承自Object呢?在代码的哪个部分涉及到了Class和Object的关系?
我知道kernel包含了一些可以在任何地方使用的方法,比如puts。这和问题1有关,但为什么不能将它们压缩到Object中呢......在那里似乎所有东西都继承自object?
Class.ancestors # => [Class, Module, Object, Kernel, BasicObject]
。 - Joshua Cheek