Я задал этот вопрос, когда пытался ответить this . Следующее является ожидаемым поведением:
module A
p Module.nesting
end
# => [A]
Но следующее:
A.instance_eval{p Module.nesting}
A.instance_exec{p Module.nesting}
A.module_eval{p Module.nesting}
A.module_exec{p Module.nesting}
all return []
. Почему они не работают так, как описано выше?
Дополнительный вопрос
Му слишком короток, предлагая интересный момент. Если это правильно, то Module.nesting
будет одним из методов и переменных, которые зависят от буквального контекста, например Method # source_location
, __ FILE __
. Это понимание правильное? Если да, может ли кто-нибудь предоставить перечень этих методов / переменных, которые зависят от буквального контекста? Думаю, было бы полезно для справки.