どこかでメモを逃してしまったので、説明していただければ幸いです。
オブジェクトの固有クラスが異なるのはなぜself.classですか?
class Foo
def initialize(symbol)
eigenclass = class << self
self
end
eigenclass.class_eval do
attr_accessor symbol
end
end
end
固有クラスをclass.selfと同等にする私の一連のロジックはかなり単純です。
class << selfインスタンスメソッドではなく、クラスメソッドを宣言する方法です。へのショートカットdef Foo.barです。
したがって、クラスオブジェクトへの参照内では、返されるのselfはと同じである必要がありますself.class。これは、クラスのメソッド/属性の定義ににclass << self設定さselfれるFoo.classためです。
私はただ混乱していますか?それとも、これはRubyメタプログラミングの卑劣なトリックですか?