[ruby-list:50633] Re: instance_evalで定数が見えない
From:
MASAKI Yuhsuke <yek@...>
Date:
2017-12-29 09:29:31 UTC
List:
ruby-list #50633
まつもとさん、ご回答ありがとうございます。 なるほど、クラスの定数もクラスに属しているわけではないのですね… ありがとうございます。 You wrote: > まつもと ゆきひろです > > 定数の参照はレキシカルに決定されますので、instance_evalなど > では変化しません。 > > > In message "Re: [ruby-list:50630] instance_evalで定数が見えない" > on Fri, 29 Dec 2017 03:24:26 +0900, MASAKI Haruka <yek@reasonset.net> writes: > > > >正木です。 > > > >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) > >***