【发布时间】:2011-05-03 18:00:53
【问题描述】:
我有一个类似下面的模块
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?
【问题讨论】:
标签: ruby class-variables