【发布时间】:2014-02-27 08:39:08
【问题描述】:
我仍在努力清楚地理解模块/类/实例变量...
我的代码目前看起来像这样......
module Foo
@@var1 ={}
@@var2 =[]
@@var3 = nil
def m1(value)
@@var2 << value
end
def m2(value)
@@var1[@@var3]=value
end
end
class Bar
include Foo
p @@var1
end
class Bar2
include Foo
p @var1
end
我正在尝试创建一个包含类范围配置的模块,以了解每个类的行为方式。配置存储在@@var1 和@@var2 中。使用此代码,变量在包含该模块的所有类之间共享。这不是期望的结果,我希望每个类都有自己的行为配置。
我也尝试过创建一个包含模块的类并创建变量,但是模块无法访问这些变量。
module Foo
def m1(value)
@@var2 << value
end
def m2(value)
@@var1[@@var3]=value
end
end
class T
@@var1 ={}
@@var2 =[]
@@var3 = nil
include foo
end
class Bar < T
p @@var1
end
class Bar2 < T
p @var1
end
我还读到,具有类变量的模块不是好的编码风格,但我想不出一种方法来实现我的功能......
提前感谢您的帮助
【问题讨论】:
-
谢谢,解决了这个问题。我从真实的代码中输入了代码,但我仍然犯了很多这样的基本错误。但是测试仍然没有按照我的预期进行。