Ruby动态类.如何解决“警告:从变量访问到”

前端之家收集整理的这篇文章主要介绍了Ruby动态类.如何解决“警告:从变量访问到”前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图编写一个程序,根据从文件读取的配置动态定义 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: warning: class variable access from toplevel
c:/utils/test.rb:7: warning: class variable access from toplevel
1
2
3

有人知道是什么原因导致这些警告和我如何摆脱他们?

我已经尝试替换tjhat的行

@@mylist = x

有了这个

class_variable_set(:@@mylist,x)

但是当我这样做时,我会得到这个错误

c:/utils/test.rb:7: warning: class variable access from toplevel
c:/utils/test.rb:7:in `foo': uninitialized class variable @@mylist in Object (NameError)
        from c:/utils/test.rb:11:in `'

提前致谢!

解决方法

只是为了删除这个警告,你应该使用class_variable_set方法
x = [1,3]

Test = Class.new do
  class_variable_set(:@@mylist,x)

  def foo
    puts @@mylist
  end
end

猜你在找的Ruby相关文章