我遇到了instance_eval
模块包含的问题。
请看下面的代码:
module B
class C
def initialize
puts 'This is C'
end
end
def hello
puts 'hello'
end
end
class A
include B
def initialize(&block)
hello
C.new
instance_eval(&block)
end
end
A.new do
hello
C.new
end
当我运行此代码时,我得到
hello
This is C
hello
-:25:in `block in ': uninitialized constant C (NameError)
from -:19:in `instance_eval'
from -:19:in `initialize'
from -:23:in `new'
from -:23:in `'
我知道它与绑定以及方法和对象如何绑定到类有关。我无法理解的是我为什么可以访问C
inside A
,而不是当我评估block
. 我希望它们在同一范围内。
谢谢!