التابع Marshal.dump في روبي
يُسلسل (Serializes) التابع dump الكائن المعطى وجميع الكائنات المنحدرة منه (descendant objects). في حال تمرير كائن من النوع IO، فستُكتب البيانات المُسَلسلة فيه، وإلا فستُعاد البيانات كسلسلة نصية.
البنية العامة
dump( obj [, anIO] , limit=-1 ) → anIO
في حال تمرير المعامل limit، فسيقتصر التابع dump على سَلسَلة الكائنات الفرعية حتى العمق المحدد. إذا كان limit سالبًا، لن يكون هناك أي تحقق من للعمق.
لا يمكن للتابع Marshal تفريغ (dump) الكائنات التالية:
- الوحدات أو الأصناف المجهولة (anonymous Class/Module).
- الكائنات المرتبطة بالنظام (مثل
DirوFile::StatوIOوFileوSocketوغيرها). - نُسَخ الأصناف
MatchDataوDataوMethodوUnboundMethodوProcوThreadوThreadGroupوContinuation - الكائنات التي تعرف توابع مفردة (singleton methods).
المعاملات
obj
الكائن المراد سَلسَلته.
anIO
كائن من النوع IO، في حال تمريره، فستُكتب البيانات المُسَلسلة فيه.
limit
يحدد الحد الأقصى لعمق الكائنات الفرعية المراد سلسلتها.
القيمة المعادة
تُعاد البيانات المُسَلسلة في الكائن IO إن أعطي المعامل anIO أو في سلسلة نصية.
أمثلة
مثال على استخدام التابع dump:
class Klass
def initialize(str)
@str = str
end
def say_hello
@str
end
end
لن تكون هناك أي مخرجات.
o = Klass.new("hello\n")
data = Marshal.dump(o)
obj = Marshal.load(data)
obj.say_hello #=> "hello\n"
انظر أيضا
- التابع
load: يعيد نتيجة تحويل البيانات المُسلسلة (serialized) في المصدر إلى كائن في روبي.