class << self
attr_accessor :n, :totalX, :totalY
end
위의 구문은 클래스 인스턴스 변수를 정의하는 데 사용됩니다. 그러나 구문에서 의미하는 바가 무엇인지 생각하면 이해가되지 않으므로이 유형의 구문이 다른 유형의 정의에도 사용되는지 궁금합니다. 여기 혼란의 내 요점은 이것이다 :Ruby에는 다음과 같은 구문 관련 응용 프로그램이 있습니다. class << self ... end
는class << self
추가] 연산자는 일반적으로 "왼쪽에있는 객체에 대한 권리에 무엇이 추가"를 의미한다. 그러나이 블록의 맥락에서 "이 블록의 내용을 인스턴스가 아닌 클래스 인스턴스의 정의에 넣는"방법은 무엇입니까? 의
class Point
# Instance methods go here
class << self
# Class methods go here
end
end
확인을위한 보는 좋은 방법입니다. 실제로 수업은 사전입니다. 그러나 실제로 마지막 문장을 추가하기 전에 여러분은 답을 얻었습니다. 다른 문맥에서 같은 sytax (책에서 보았 듯이)는 클래스 인스턴스 메소드 대신 클래스 메소드를 생성합니다. 맨 아래에있는 Point 클래스 예제는 클래스 메소드를 생성하지만 맨 위에있는 attr_accessor는 클래스 - 인스턴스 레벨에있는 속성을 제공하는 이유는 무엇입니까? –
실제로 당신이 제공 한 설명을 사용하여 어쩌면 나는 이전 주석에서 질문에 대답 할 수있다. attr_accessor 메소드는 Class 클래스의 instance_variable_set 및 instance_variable_get 메소드를 호출한다. 일반적으로 그것들은 인스턴스 변수를 생성하게 될 것입니다 만, 우리가 클래스 사전에 추가하기 때문에 클래스 인스턴스 변수를 생성하게됩니다. 좋아, 이제 알았어. 감사. –
-1은 클래스 << x ... end가 실제로 x의 메타 클래스가 아닌 x의 메타 클래스에 정보를 추가하기 때문에 오도 된 것입니다. – rampion