سؤال

هل هناك طريقة للوصول إلى كل شيء في جدول الرموز في روبي؟أريد أن أكون قادرًا على إجراء تسلسل أو حفظ الحالة الحالية لتشغيل البرنامج.للقيام بذلك، يبدو أنني بحاجة إلى أن أكون قادرًا على التكرار على جميع المتغيرات في النطاق.

هل كانت مفيدة؟

المحلول

أعتقد أنه يأتي من خلفية بيرل، وأنه يرغب في الحصول على كافة المتغيرات المحددة في البرنامج النصي وإجراء تسلسل لهم.بهذه الطريقة، عندما يقوم بتحميل الملف، فإنه سيستعيده.ما زلت أبحث عن كيفية الحصول على قائمة بالمتغيرات، ولكن سيتم إجراء التسلسل باستخدام 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

نصائح أخرى

إذا كنت قد فهمت سؤالك بشكل صحيح - ان كنت تود أن ترى كل حرف في البرنامج ثم التالية يجب أن تفعل خدعة:

puts Symbol.all_symbols.inspect

وو"all_symbols" أسلوب فئة سيعود صفيف من كل الرمز حاليا في البرنامج.

وأنا لا أعتقد هناك، ولكن هل يمكن دائما استخدام <لأ href = "http://www.ruby-doc.org/core-1.8.7/classes/Marshal.html" يختلط = "نوفولو noreferrer "> تفريغ مارشال / تحميل.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top