الاختلافات في السلوك instance_eval بين روبي 1.9.1 و1.8.6؟

StackOverflow https://stackoverflow.com/questions/1228032

  •  22-07-2019
  •  | 
  •  

سؤال

ولقد لاحظت أن المتغيرات الطبقةmy_class فار وينظر الآن حتى في سياق الكائن instance_eval'd في Ruby 1.9.1 بينما هذا لم يكن الحال في روبي 1.8.6.

ما هي بعض الاختلافات الأخرى في سلوك instance_eval لروبي 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

نصائح أخرى

وأعتقد أنه [على الأقل في الوقت الحالي] لا تعود النفس أيضا.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top