有没有办法访问Ruby中符号表中的所有内容?我希望能够序列化或以其他方式保存程序运行的当前状态。要做到这一点,似乎我需要能够迭代范围内的所有变量。如何访问Ruby中的符号表?
7
A
回答
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
0
我不相信有,但你总是可以使用marshall转储/加载。
4
如果我有正确的理解你的问题 - 你想看到你的程序中所有的符号,然后下面应该做的伎俩:
puts Symbol.all_symbols.inspect
的“all_symbols”类方法会返回数组当前在程序中的每个符号。
+0
是的,这是真的。有趣的是,它返回的符号还没有定义好:`ZZZ`没有被定义。 `ZZZ; Symbol.all_symbols`包含`ZZZ`。 – 2015-07-07 00:26:00
相关问题
- 1. Ruby中的符号表溢出问题
- 2. 如何访问ruby整数的符号位?
- 3. 访问.class文件中的符号表
- 4. 访问插件中的符号列表
- 5. 访问与代表符号
- 6. 在Ruby中,如何替换字符串中的问号字符?
- 7. 如何使用符号访问Sinatra params?
- 8. 字符串中的Ruby访问字
- 9. 访问Ruby对象中的字符串
- 10. 问关于Ruby符号
- 11. 对象如何访问当前包的符号表?
- 12. Ruby中的%符号表示什么?
- 13. 访问ELF符号表用C
- 14. 如何在Ruby中使用符号
- 15. 访问iOS中最近使用的表情符号列表
- 16. ANTLR4 - > Lexer符号访问者访问
- 17. 符号在Ruby中
- 18. 如何在ruby中访问ghost父类?
- 19. 如何在Ruby中访问'zip'gem(或'rubyzip')?
- 20. 如何在ruby中访问Google Contacts API
- 21. 如何访问Python中的字符串列表中的列表
- 22. 运行时访问Go中的符号
- 23. 访问Wingdings字体中的符号
- 24. 访问影片剪辑中的符号
- 25. 如何访问AVAsynchronousCIImageFilteringRequest中的帧号?
- 26. 如何检索quantmod中可通过getSymbols访问的所有符号的列表?
- 27. 如何限制访问共享对象中的符号?
- 28. 我如何可靠地访问Adobe Firework中的unicode符号
- 29. 如何访问控件模板中的标记符号
- 30. 如何使用点符号内的字符串访问属性?
如果你不介意我问,你用这个呢? – Geo 2009-02-02 19:03:14
我为此使用它:http://stackoverflow.com/questions/199603/how-do-you-stringize-serialize-ruby-code基本上,没有人回答我的问题够好,所以在提供赏金之前会让我失去代表),我想我会把它分解成这个子问题,并自己找出答案。 – 2009-02-02 22:27:10