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