【问题标题】:ruby meta: Class.superclass.class == Class红宝石元:Class.superclass.class == Class
【发布时间】:2011-11-01 07:09:56
【问题描述】:
irb(main):101:0> Class.superclass
=> Module
irb(main):102:0> Class.superclass.class
=> Class
irb(main):103:0> Class.superclass.class == Class
=> true

通过继承,Class 按元类(或任何其他术语?),ClassModuleObjectBasicObject 都是 Class 的实例strong>类。

irb(main):109:0> Module.class
=> Class
irb(main):172:0> Object.class
=> Class
irb(main):173:0> BasicObject.class
=> Class
irb(main):174:0> Class.class
=> Class

如何理解Class与Class、Module、Object、BasicObject之间的这种关系?
我阅读了一些关于 ruby​​ 的元编程讨论,但请有任何资源讨论这个特定问题?

谢谢。

【问题讨论】:

    标签: ruby oop metaprogramming


    【解决方案1】:

    我认为这些一开始可能会让您感到困惑,但是当您得到它之后,您就会清楚地看到不同之处。我建议查看这些资源:

    【讨论】:

    • +1,最后一个链接是我一直推荐的用于理解 Ruby 的对象模型的链接。
    • ++ 对于 dave thomas 链接,该视频完全为我清除了一切。看了两遍
    【解决方案2】:

    这是Ruby internals 上的视频谈话。值得一看,可能会解决一些问题。

    【讨论】:

      【解决方案3】:

      这是一个非常有趣的问题。这是本书的链接,它帮助我清楚地理解了这一点:
      Metaprogramming Ruby

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-08-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-09-09
        • 2011-06-05
        • 2022-01-21
        • 1970-01-01
        相关资源
        最近更新 更多