代码之家  ›  专栏  ›  技术社区  ›  Jonathan Tran

如何访问Ruby中的符号表?

  •  7
  • Jonathan Tran  · 技术社区  · 15 年前

    有没有一种方法可以访问Ruby中符号表中的所有内容?我希望能够序列化或保存程序运行的当前状态。要做到这一点,我似乎需要能够遍历范围内的所有变量。

    3 回复  |  直到 10 年前
        1
  •  6
  •   Geo    15 年前

    我认为他来自Perl背景,他希望获得脚本中定义的所有变量并将其序列化。这样,当他加载文件时,他就会把它们放回去。 我仍在搜索如何获取变量列表,但将使用marshal.dump进行序列化,并使用marshal.load进行读回。一旦我知道如何获得所有定义变量的列表,我将编辑这个帖子。

    编辑:找到了!

    您可以通过调用以下方法来获取所有变量的列表:

    local_variables
    global_variables
    

    如果您还没有获得序列化代码,我建议您这样做:

    • 创建包含变量名和变量值的类或结构实例,并将其添加到数组中:
    
    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
        2
  •  4
  •   David Grayson    10 年前

    如果我已经正确理解了您的问题-您希望看到程序中的所有符号,那么下面的技巧应该可以做到:

    puts Symbol.all_symbols.inspect
    

    _156;All_ Class方法将返回程序中当前每个符号的数组。

        3
  •  0
  •   Allyn    15 年前

    我不相信有,但你可以一直使用 marshall 转储/加载。