【发布时间】:2012-02-07 10:38:05
【问题描述】:
我正在阅读“Ruby 中的元编程”
这是一本非常棒的书。说真的,它谈论的是我在其他地方从未听说过的东西。
我有一些关于对象的具体问题(我在前几章)
我了解 RubyGems gem 将方法“gem”安装到模块内核,以便它显示在每个对象上。他们没有将其放入 Object 类中是否有原因?
他谈到了当 ruby 寻找方法时,它总是会立即向上。 “上”到底是什么意思?我在图中看到它,只是我不太了解“向上”的目的。他没有过多解释那部分。
Object 类的意义何在?为什么这些方法不能放在 Class 中?如果每个对象都属于一个类(即使它的类),那么对象、基本对象和内核的意义何在?
String, Array, blah blah 显然是 Class 的一个实例。类也是自身的一个实例。那么如果 Class 是 Class 的一个实例......它如何也继承自 Object 呢?它在代码中的哪个位置与 Class 和 Object 相关?
我知道内核包含可以在任何地方使用的方法,例如 puts无论如何都反对
【问题讨论】:
-
我认为在进入元编程之前,您需要先阅读一本探讨面向对象编程基础的书。有很多,快速搜索就会找到它们。
-
对于 3: 如果他们将这些方法放到 Class 上,它们将可用于 Class 的实例(字符串、数组等),但不能用于 Class 实例的实例( String.new、Array.new 等)对于 4: Class 是 Object
Class.ancestors # => [Class, Module, Object, Kernel, BasicObject]的子类 -
@Iain:“有很多,快速搜索就会找到它们。” - 使用 Ruby 作为编程语言的书籍,还是使用 Java 和 SmallTalk 等其他语言的书籍?
-
如果您对使用 Ruby 感兴趣,那么 Ruby。否则,任何 OO 语言,因为它们都会以类似的方式处理基础知识。不过,我确实认为 Ruby 是一个特别好的选择,因为我认为它的 OO 做得很好,语法/风格不会妨碍学习。
-
@Iain:如果是这样,请列举一些探索面向对象编程基础并使用 Ruby 作为编程语言的好书。