最近遇到一个问题,百思不得解,那位兄弟可以解析一下。 看一下下面的代码
module M1
CT = "ok"
end
class C1
CK = "ck"
include M1
def self.method1
puts self
puts "#{CK} in method1"
puts "#{CT} in method1"
end
class << self
def method2
puts self
puts "#{CK} in method1"
puts "#{CT} in method2"
end
end
end
C1.method1
C1.method2
输出结果是
C1
ck in method1
ok in method1
C1
ck in method2
NameError: uninitialized constant Class::CT
from (irb):16:in `method2'
method1 和 method2 都是常见的类方法的定义方面,我向来认为它们是等价可替换的写法,但是从实际执行的结果看,它们里面的常量查找路径不一样,谁能解析一下?