Rubyのシンボルテーブルのすべてにアクセスする方法はありますか? プログラムの実行の現在の状態をシリアル化または保存できるようにしたいと考えています。これを行うには、スコープ内のすべての変数を反復できる必要があるようです。
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
あるとは思いませんが、いつでもマーシャルのダンプ/ロードを使用できます。
于 2009-02-02T17:20:49.217 に答える