[#50611] [質問] メタプログラミングRuby(第1版)の include時の無名クラス という記載について — モコあき <mokoriso@...>
44Oi44Kz44GC44GN44Go55Sz44GX44G+44GZDQrjgZPjga7jg6Hjg7zjg6rjg7PjgrDjg6rjgrnj
5 messages
2017/12/03
[#50625] Ruby の用語:クラス,モジュール,インスタンス — "5.5" <5.5@...>
5.5 です。
5 messages
2017/12/26
[#50630] instance_evalで定数が見えない — MASAKI Haruka <yek@...>
=E6=AD=A3=E6=9C=A8=E3=81=A7=E3=81=99=E3=80=82
7 messages
2017/12/28
[#50631] Re: instance_evalで定数が見えない
— Yukihiro Matsumoto <matz@...>
2017/12/29
まつもと ゆきひろです
[ruby-list:50631] Re: instance_evalで定数が見えない
From:
Yukihiro Matsumoto <matz@...>
Date:
2017-12-29 00:51:31 UTC
List:
ruby-list #50631
まつもと ゆきひろです
定数の参照はレキシカルに決定されますので、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)
>***