Различия в поведении instance_eval между Ruby 1.9.1 и 1.8.6? - PullRequest
1 голос
/ 04 августа 2009

Я заметил, что переменные класса @@ my_class var теперь ищутся в контексте объекта instance_eval'd в Ruby 1.9.1, тогда как в Ruby 1.8.6 это было не так.

Каковы некоторые другие различия в поведении instance_eval для Ruby 1.9.1?

Ответы [ 2 ]

1 голос
/ 05 августа 2009

Я не могу перечислить их все, но я знаю, что в постоянном поиске есть некоторые изменения. В 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
0 голосов
/ 12 августа 2009

Я думаю, что [по крайней мере в настоящее время] тоже не возвращает себя.

...