어딘가에서 메모를 놓쳤습니다. 이에 대해 설명해 주시기 바랍니다.
객체의 고유 클래스가 다른 이유는 무엇 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
그냥 헷갈 리나요? 아니면 이것은 루비 메타 프로그래밍의 교활한 속임수입니까?