【发布时间】:2011-12-22 08:47:16
【问题描述】:
我正在尝试编写一个基于从文件读取的配置动态定义 ruby 类的程序。我知道我可以使用 Class.new 来做到这一点。这是一个示例程序:
x = [1,2,3]
Test = Class.new do
@@mylist = x
def foo
puts @@mylist
end
end
Test.new.foo
当我运行它时,我得到以下输出(使用 ruby 1.9.3p0 运行):
c:/utils/test.rb:4: 警告:从顶层访问类变量 c:/utils/test.rb:7: 警告:从顶层访问类变量 1 2 3
有谁知道导致这些警告的原因以及如何消除它们?
我已经尝试替换 tjhat 的行
@@mylist = x
有了这个
class_variable_set(:@@mylist, x)
但是当我这样做时,我得到了这个错误:
c:/utils/test.rb:7: 警告:从顶层访问类变量
c:/utils/test.rb:7:in `foo': 对象中未初始化的类变量@@mylist (NameError)
来自 c:/utils/test.rb:11:in `'
提前致谢!
【问题讨论】: