Я пытаюсь написать программу, которая динамически определяет классы 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 `'
Спасибо заранее!