Я пытаюсь написать программу, которая динамически определяет классы 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
Кто-нибудь знает, что вызывает эти предупреждения и как я могу от них избавиться?
Я пытался заменить строку, которая делает
@@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 `'
Заранее спасибо!