[ruby-list:50630] instance_evalで定数が見えない

From: MASAKI Haruka <yek@...>
Date: 2017-12-28 18:24:26 UTC
List: ruby-list #50630
正木です。

Ruby 2.2のときにも言及したのですが、2.5でも変わっていないので再度お聞かせ下さい。
インスタンスの特異クラス内では見えるクラスの定数が、instance_evalでは見えません。

これは然るべき挙動なのでしょうか。

***
コード:

class ClassA
  CONST="Hello"
end

obj = ClassA.new

class <<obj
  def hi1
    p CONST
  end
end

obj.instance_eval do
  def hi2
    p CONST
  end
end


結果:

"Hello"
Traceback (most resent call last):
        1: fron instance_eval_test.rb:20:in `<main>'
instance_eval_test.rb:15:in `hi2': uninitialized constant CONST (NameError)
***

In This Thread

Prev Next