2010-03-22 4 views
0

에 세터를 제거하는 방법 :루비 -이 같은 클래스를 감안할 때 객체

나는이에 세터를 제거하는 방법에 대한 갈 수있는 방법은 클래스 B의 원본 소스 코드를 수정할 수 없습니다
class B 
    class << self 
     attr_accessor :var 
    end 
end 

가정하자 클래스 변수 var? 나는 B.send ("unset_method", "var =")와 같은 것을 사용하려고 시도했으나 작동하지 않는다. (remove_method를 사용하거나 아무것도하지 않는 var = 메소드로 그 메소드를 덮어 쓰지 않는다.) 어떤 아이디어?

답변

0
class <<B ; remove_method :var= ; end 
+0

신난다! 나는 그런 일을하는 것을 잊었다! –

1

봅니다 :

class B 
    class << self 
    undef var= 
    end 
end 

당신은 remove_method 대신 사용할 수 있습니다 :

class B 
    class << self 
    remove_method :var= 
    end 
end 

의 차이를 보려면로 이동 : http://www.nach-vorne.de/2008/2/28/undef_method-remove_method/

+0

이 결과는 오류가 발생합니다. NameError : 클래스에 메서드 'var ='이 정의되지 않았습니다. –

관련 문제