x_evalしたときのコンテクスト(続)
前回x_evalメソッドでのコンテクストについて、selfとklassという側面からまとめた。*1
今回はローカル変数の状態という側面を加えて、x_eval/x_execメソッドでのコンテクストについておさらいする。
x_eval/x_exec実行時のローカル変数の状態
単純な話で、ローカル変数の状態は呼び出し元のまま。
class Sample; end sample = Sample.new var = "top level" # eval系メソッド Sample.class_eval("p var") # => "top level" Sample.class_eval{ p var } # => "top level" Sample.instance_eval("p var") # => "top level" Sample.instance_eval{ p var } # => "top level" sample.instance_eval("p var") # => "top level" sample.instance_eval{ p var } # => "top level" # exec系メソッド Sample.class_exec{ p var } # => "top level" Sample.instance_exec{ p var } # => "top level" sample.instance_exec{ p var } # => "top level"