Ruby 1.9.1과 1.8.6 사이의 인스턴스 _eval 동작의 차이?
문제
클래스 변수 @@ my_class var는 이제 Ruby 1.9.1의 instance_eval'd 객체의 맥락에서 위로 올라가는 반면 Ruby 1.8.6에서는 그렇지 않았습니다.
Ruby 1.9.1에 대한 instance_eval의 행동의 다른 차이점은 무엇입니까?
해결책
나는 그것들을 모두 나열 할 수는 없지만 지속적인 조회에 약간의 변화가 있다는 것을 알고 있습니다. 1.8에서는 발신자 범위에 지속적인 조회가 있었고 1.9의 블록 범위에 있습니다.
FOO = "hi"
class Something
FOO = "bye"
def self.handle(&block)
instance_eval(&block)
end
end
p Something.handle { FOO }
# "hi" on 1.8, "bye" on 1.9
다른 팁
나는 그것이 [적어도 현재] 자신을 반환하지 않는다고 생각합니다.
제휴하지 않습니다 StackOverflow