に私は(:)実験用)のコードを書きました。是正?メタクラスは、Ruby
1
A
答えて
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彼らが必要とされるときには、そうであれば、「カメは一番下に」アプローチすることができます。
関連する問題
- 1. Ruby:メタクラスとクラス変数
- 2. GroovyのはExpandoメタクラス
- 3. Pythonのメタクラス
- 4. PythonメタクラスとModGrammar
- 5. pythonメタクラスの継承問題
- 6. メタクラスとC++でのリフレクション
- 7. Pythonサブクラスのトラッキング - メタクラスとビルトイン
- 8. クラスメソッドをデフォルトにするメタクラス?
- 9. ユニットテストのメタクラスとPythonの内部クラス
- 10. メタクラスにメソッドを追加する
- 11. Extjsストアのフィルタリング - メタクラスを含む
- 12. メタクラスの "__call__" と製品・クラスの "__init__"
- 13. Rubyメタクラスが与えられていると、それがどのインスタンスに付属しているのですか?
- 14. Groovyの - 私たちは、単純なGroovyのクラス持っメタクラス
- 15. Groovyメタクラスを適切に初期化する場所は?
- 16. Grailsの - メソッドはグローバル使用可能にすると、メタクラス
- 17. django:モデルとフィールドはメタクラスで何をするのですか?
- 18. SQLAlchemyのメタクラス対ミックスインは、例えば、私は二つのクラス持ち、
- 19. メタクラスを使用してメソッドを追加する方法
- 20. サブクラスでメタクラスが呼び出されない
- 21. どのようにしてメタクラスを作成しますか?
- 22. Boost.Pythonでラップされたクラスのメタクラスを設定する
- 23. メタクラスを構成します。 Pythonバージョンの競合
- 24. メタクラスで属性の種類を制限する
- 25. メタクラスを使用したPythonのファクトリパターン実装
- 26. Python:フォルダ内のすべてのファイルのメタクラスを設定する
- 27. 古いスタイルのクラス、新しいスタイルのクラスとメタクラス
- 28. は、Ruby
- 29. は、Ruby
- 30. Rubyは