简体   繁体   English

Ruby本征类模式-要求澄清

[英]Ruby eigenclass pattern - Asking for clarification

Which information sources describe best Ruby's eigenclasses? 哪些信息来源描述了最佳的Ruby本征类?

I have read the following: 我已阅读以下内容:

Still, I was NOT able to deduce the following behaviour: 尽管如此,我仍无法推断出以下行为:

class Object
  def sc(n = 1)  # nth superclass
    if n == 0 then return self end
    if n == 1 then return self.superclass end
    self.superclass ? self.superclass.sc(n-1) : nil
  end

  def ec(n = 1)  # nth eigenclass
    if n == 0 then return self end
    if n == 1 then return class << self; self; end end
    self.ec.ec(n-1)
  end

  def put_ups (m, n)  # print 0--nth superclasses of mth eigenclass

    puts "The first %d superclass ancestors-or-self of the %dth eigenclass of %s:" %
      [n, m, self.to_s]
    0.upto(n) {
      |i| puts "(%02d|%02d) %s" % [m, i, self.ec(m).sc(i).to_s]
    }
  end
end
class A; end

puts "RUBY_VERSION: %s" % RUBY_VERSION

A.new.put_ups(5,20)

Output 产量


RUBY_VERSION: 1.9.2
The first 20 superclass ancestors-or-self of the 5th eigenclass of #<A:0xab7c50>:
(05|00) #<Class:#<Class:#<Class:#<Class:#<Class:#<A:0xab7c50>>>>>>
(05|01) #<Class:#<Class:#<Class:#<Class:A>>>>
(05|02) #<Class:#<Class:#<Class:#<Class:Object>>>>
(05|03) #<Class:#<Class:#<Class:#<Class:BasicObject>>>>
(05|04) #<Class:#<Class:#<Class:Class>>>
(05|05) #<Class:#<Class:#<Class:Module>>>
(05|06) #<Class:#<Class:#<Class:Object>>>
(05|07) #<Class:#<Class:#<Class:BasicObject>>>
(05|08) #<Class:#<Class:Class>>
(05|09) #<Class:#<Class:Module>>
(05|10) #<Class:#<Class:Object>>
(05|11) #<Class:#<Class:BasicObject>>
(05|12) #<Class:Class>
(05|13) #<Class:Module>
(05|14) #<Class:Object>
(05|15) #<Class:BasicObject>
(05|16) Class
(05|17) Module
(05|18) Object
(05|19) BasicObject
(05|20)

现在可以在http://www.atalon.cz/rb-om/ruby-object-model/获得详细的文档

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM