有没有办法在 Ruby 中访问符号表中的所有内容?我希望能够序列化或以其他方式保存程序运行的当前状态。为此,我似乎需要能够遍历范围内的所有变量。
Jonathan Tran
问问题
1965 次
3 回答
6
我认为他来自 perl 背景,并且他想获取脚本中定义的所有变量并将它们序列化。这样,当他加载文件时,他会取回它们。我仍在寻找如何获取变量列表,但将使用 Marshal.dump 进行序列化,并使用 Marshal.load 进行读取。一旦我了解如何获取所有已定义变量的列表,我将编辑该帖子。
编辑:找到了!
您可以通过调用这些方法获取所有变量的列表:
local_variables
global_variables
如果您还没有序列化代码,我建议您这样做:
- 创建一个包含变量名和变量值的类或 Struct 实例,并将它们添加到数组中:
local_variables.each {|var| my_array << 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
于 2009-02-02T17:32:29.817 回答
5
如果我正确理解了您的问题-您希望查看程序中的所有符号,那么以下内容应该可以解决问题:
puts Symbol.all_symbols.inspect
“all_symbols”类方法将返回程序中当前每个符号的数组。
于 2009-02-02T17:26:22.463 回答
0
我不相信有,但你总是可以使用marshall转储/加载。
于 2009-02-02T17:20:49.217 回答