Как вы получаете доступ к таблице символов в Ruby? - PullRequest
7 голосов
/ 02 февраля 2009

Есть ли способ получить доступ ко всему в таблице символов в Ruby? Я хочу иметь возможность сериализации или иным образом сохранить текущее состояние запуска программы. Для этого мне кажется, что мне нужно иметь возможность перебирать все переменные в области видимости.

Ответы [ 3 ]

6 голосов
/ 02 февраля 2009

Я думаю, что он пришел из Perl и хотел бы получить все переменные, определенные в скрипте, и сериализовать их. Таким образом, когда он загрузит файл, он вернет их обратно. Я все еще ищу, как получить список переменных, но сериализация будет выполнена с использованием Marshal.dump, а их чтение будет выполнено с помощью Marshal.load. Я отредактирую пост, как только узнаю, как получить список всех определенных переменных.

РЕДАКТИРОВАТЬ: нашел!

Вы можете получить список всех переменных, вызвав эти методы:

local_variables</code>
<code>global_variables

И если вы еще не получили свой код сериализации, я бы предложил что-то вроде этого:

  • создайте класс или экземпляр Struct, который содержит имя переменной и значение переменной, и добавьте их в массив:

local_variables.each {|var| my_array &lt&lt MyVarObject.new(var,eval(var)) } # eval is used to get the value of the variable

и затем сериализовать массив:


data = Marshal.dump(my_array)
File.open("myfile.ser","w") do |file|
  file.puts data
end
4 голосов
/ 02 февраля 2009

Если я правильно понял ваш вопрос - что вы хотели бы видеть все символы в вашей программе, то вам нужно выполнить следующее:

puts Symbol.all_symbols.inspect

Метод класса «all_symbols» будет возвращать массив каждого символа, который в данный момент находится в программе.

0 голосов
/ 02 февраля 2009

Я не верю, что есть, но вы всегда можете использовать marshall dump / load.

...