3
class_eval
을 사용하여 Ruby 변수 범위에 대한 모범 사례에 대한 질문이 있습니다.class_eval에 대한 클래스 수준 변수의 대안은 무엇입니까?
블록에서 class_eval
블록의 첫 번째 변수와 두 번째 변수는 정의되지 않습니다.
def parent_method(opts={})
@@first = opts[:percent]
@@second = (10 * @@first).to_i
SecondClass.class_eval do
def second_method; return {:a => @@first, :b => @@second}; end;
end
end
- 무엇이다 : 나는 일이를 얻기 위해 찾은 유일한 방법은 제 1 및 제 2 클래스 레벨의 변수를 확인하는 것입니다 때문에
def parent_method(opts={}) first = opts[:percent] second = (10 * first).to_i SecondClass.class_eval do def second_method; return {:a => first, :b => second}; end; end end
이, 범위 지정 문제가 될 것으로 보인다 이 시나리오의 가장 좋은 방법은 무엇입니까? 전역 변수가이 시나리오에서 좋지 않은 선택이라는 것을 알았지 만, 결과적으로 클래스 수준의 변수가 비슷하게 싫증 나게되는 넓은 범위 때문에?
- 변수 범위를 다루는 것 외에도
class_eval
에서 이러한 변수의 액세스 가능성을 해결할 수있는 다른 방법이 있습니까?
감사합니다 -이 작품! – shedd