加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 22:40:05 所属栏目:百科 来源:网络整理
导读:我试图编写一个程序,根据从文件读取的配置动态定义 ruby类.我知道我可以使用Class.new来做到这一点.这是一个示例程序: x = [1,2,3]Test = Class.new do @@mylist = x def foo puts @@mylist endendTest.new.foo 当我运行这个我得到以下输出(以ruby 1.9.3p0
我试图编写一个程序,根据从文件读取的配置动态定义 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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读