[ruby-list:50112] instance_evalにおけるクラスにネストされた定数へのアクセス
From:
MASAKI Yuhsuke <reasonset@...>
Date:
2015-04-08 12:56:17 UTC
List:
ruby-list #50112
正木です。
class A
class B
end
end
のようにネストされたクラスあるいは定数が、instance_evalでは参照できない、
という振る舞いについて伺いたく存じます。
*****
class A
class B
end
def b
p B
end
end
a = A.new
a.b
A.instance_eval {
p B rescue p nil
}
a.instance_eval {
p B rescue p nil
}
class <<a
p B rescue p nil
end
*****
A::B
nil
nil
A::B
*****
Aのコンテキストで見えるのはもちろん、
そのインスタンスであるaのコンテキスト(メソッド)や
aの特異クラスでもA::Bは見えています。
ところが、A.instance_evalでもa.instance_evalでもA::Bが見えません。
これはどういったことなのかご存知の方お願いいたします。
******************************
* The Rider, Hacker and Musician.
* +++ ENABLE YOUR HEART +++
******************************
* MASAKI Yuhsuke.
* reasonset@yahoo.co.jp
* Website: http://reasonset.net/
* GitHub : https://github.com/reasonset/
* Twitter: @reasonset
******************************