나는 클래스 변수 @@ my_class var가 이제는 Ruby 1.9.1의 instance_eval 오브젝트의 컨텍스트에서 찾았지만 Ruby 1.8.6에서는 그렇지 않습니다.Ruby 1.9.1과 1.8.6 사이의 instance_eval 동작의 차이점은 무엇입니까?
Ruby 1.9.1에서 instance_eval의 다른 동작에는 어떤 차이가 있습니까?
나는 클래스 변수 @@ my_class var가 이제는 Ruby 1.9.1의 instance_eval 오브젝트의 컨텍스트에서 찾았지만 Ruby 1.8.6에서는 그렇지 않습니다.Ruby 1.9.1과 1.8.6 사이의 instance_eval 동작의 차이점은 무엇입니까?
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
나는 적어도 현재는 자기를 돌려 보내지 않는다고 생각합니다.
이것이 잘못된 것 같습니다. 1.9 및 1.8에서 코드를 실행하면 출력이 동일합니다. –
2009 년에 제공되었던 1.9 버전의 경우 아마도 정확했을 것입니다. :) –