Различия в поведении instance_eval между Ruby 1.9.1 и 1.8.6?
Вопрос
Я заметил, что переменные класса @@ my_class var теперь ищутся в контексте объекта instance_eval'd в Ruby 1.9.1, тогда как в Ruby 1.8.6 это было не так. Р>
Каковы некоторые другие различия в поведении instance_eval для Ruby 1.9.1?
Решение
Я не могу перечислить их все, но я знаю, что в постоянном поиске есть некоторые изменения. В 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