ruby 1.9.2p180 と 1.9.3p194 で eval の挙動が違っていた。
class Foo def eval_(code) e_val(code) end private def e_val(code) eval code end end f = Foo.new code = "def fff; :fff ; end" f.eval_ code p f.fff
このコードを走らせると、1.9.2 では f.fff はエラーでとまる。エラーメッセージは fff はプライベートメソッドだからと。確かにメソッド fff は class Foo の private 以下で eval されるので、そうなるのもうなずける。しかし 1.9.3 では f.fff としてもエラーにはならない。
0 件のコメント:
コメントを投稿