我试图用类变量来理解模块包含。我认为包含一个带有类变量的模块也会将类变量包含到类定义中。
这按预期工作:
module A
@@my_name = "rick"
def print_name
puts @@my_name
end
end
class Y
include A
extend A
end
Y.print_name
但这不会:
module A
def self.included(klass)
klass.include B
klass.extend C
end
module B
@@my_name = "bob"
end
module C
def print_name
puts @@my_name
end
end
end
class Y
include A
end
Y.print_name
我期待“鲍勃”,但我得到了:
A::C 中未初始化的类变量 @@my_name