instance_eval
다음에 attr_accessor
이 있고 그 뒤에 initialize
이 있습니다. 계속``초기화 '': 정의되지 않은 메소드 'attr_accessor '`가 나타납니다. 왜이 기능이 작동하지 않습니까?초기화 할 때 attr_accessor를 사용할 수없는 이유는 무엇입니까?
이 코드는 다음과 같은 종류의 외모 : attr_accessor가 MyClass의 인스턴스 방법으로 정의되지 않기 때문에 당신은, 인스턴스에 attr_accessor 호출 할 수 없습니다
class MyClass
def initialize(*args)
instance_eval "attr_accessor :#{sym}"
end
end
class_eval을
varname
의 값입니다 가정 : 당신은 그냥 작성해야 자기가 쓴 곳 – johannes아니에요. 'class << self; ...; 종료는 폐쇄가 아닙니다. 그 안에'varname'에 접근 할 수 없지만,'class_eval' 블록에서 액세스 할 수 있습니다. – sepp2k
[반작용의 답] (http://stackoverflow.com/a/14978624/403664) 좋습니다. 확인 해봐. –