2011-06-18 7 views

答えて

3

書籍「"Metaprogramming Ruby" of Paolo Perrotta」では、メタクラスという用語は1回だけ言及されていますが、代わりに「固有クラス」という用語が頻繁に使用されます。あなたの例のクラスAの固有クラスはメタクラスであり、独自のメタクラス(メタクラスではありません)を持っています。だから私はあなたの例を拡張しようとしましたが、このチェーンは決して終わりませんようだ:

class Eigen 
    class << self 
    def getMetaclass 
     self 
    end 

    def getMetaMetaClass 
     class << self 
     self 
     end 
    end 

    def getMetaMetaMetaClass 
     class << self 
     class << self 
      self 
     end 
     end 
    end 

    end 
end 

if __FILE__ == $0 
    puts Eigen.getMetaclass 
    puts Eigen.getMetaMetaClass 
    puts Eigen.getMetaMetaMetaClass 
end 

結果はここにある:

ルビーeigen.rb

Eigen 
#<Class:Eigen> 
#<Class:#<Class:Eigen>> 

Iこのような構造ではどうすればいいのか分かりません:-)

0

私は、固有クラスはc彼らが必要とされるときには、そうであれば、「カメは一番下に」アプローチすることができます。

関連する問題