我有一个类似以下的模块
module MyModule
def self.included(base)
base.extend ClassMethods
end
module ClassMethods
def foo
@@var = 1
end
def bar
puts @@var
end
end
end
class A
include MyModule
foo
end
class B < A; end
以便
B.bar outputs '1'.
但是,我希望仅在调用 .foo 时才定义 .bar 。我试过了
module MyModule
def self.included(base)
base.extend ClassMethods
end
module ClassMethods
def foo
@@var = 1
extend SingletonMethods
end
module SingletonMethods
def bar
puts @@var
end
end
end
问题是
B.bar
返回错误“MyModule::SingletonMethods 中未初始化的类变量 @@var”。如何使.foo 中定义的变量可用于.bar?