self.class.instance_variable_set("@var", ...)
을 클래스 메서드 내부에서 호출하면 변수가 실제로 저장되는 위치는 어디입니까? 수업 자체에 있나요? 그 계급의 경우? 나는 다음 중 하나에 그것을 찾을 수 없습니다 : 나는 심지어 (class << self; self; end)
트릭을 사용하여 시도하지만루비 메타 프로그래밍 질문
e = Example.new
e.instance_variables
e.class.class_variables
난 아무것도 (http://ruby-metaprogramming.rubylearning.com/html/seeingMetaclassesClearly.html를) 찾을 수 없습니다. 여기
(나는 필요에 따라 작동) 코드 조각 그러나 나는 그것이 작동하는 이유 :module HandyModule
def self.included(base)
base.extend ClassMethods
end
module ClassMethods
def use_template(template_name)
self.class.instance_variable_set("@_template", template_name)
end
def build(attributes = {})
template_name = self.class.instance_variable_get("@_template")
# do stuff with the template
end
end
end
class Example
include HandyModule
use_template :contact_form
end
을 은 본질적으로 나는이 편리한 모듈을 포함 할 수 있습니다 모르겠어요 후 나는 클래스가 메서드를 use_template
이라고 부르며 내 빌드 방법에서 사용할 템플릿을 지정할 수 있습니다.
클래스가 객체라는 사실을 잊지 마십시오. 그것들은'Class' 클래스를 가진 객체 일뿐입니다. –