الفرق بين المراجعتين ل"Ruby/Marshal/dump"

من موسوعة حسوب
< Ruby‏ | Marshal
اذهب إلى التنقل اذهب إلى البحث
سطر 3: سطر 3:
 
[[تصنيف: Ruby Method]]
 
[[تصنيف: Ruby Method]]
 
[[تصنيف: Ruby Marshal]]
 
[[تصنيف: Ruby Marshal]]
يُسلسل (Serializes) التابع <code>::dump</code> الوسيط المعطى obj (انظر فقرة البنية العام) وجميع الكائنات المنحدرة (descendant objects). في حال تمرير كائن IO، فستُكتب البيانات المُسَلسلة فيه، وإلا فستُعاد البيانات كسلسلة نصية (<code>String</code>). في حال تمرير limit، فسيقتصر عمل التابع <code>::dump</code> على الكائنات الفرعية على العمق المحدد به. إذا كان limit سالباً، لن يتم إجراء أي تحقق للعمق.
+
يُسلسل (Serializes) التابع <code>dump</code> الوسيط المعطى <code>obj</code> (انظر فقرة البنية العام) وجميع الكائنات المنحدرة منه (descendant objects). في حال تمرير كائن <code>IO</code>، فستُكتب البيانات المُسَلسلة فيه، وإلا فستُعاد البيانات كسلسلة نصية (<code>String</code>).  
  
(لا تنتج أي مخرجات)
+
في حال تمرير الوسيط <code>limit</code>، فسيقتصر التابع <code>dump</code> على سَلسَلة الكائنات الفرعية حتى العمق المحدد. إذا كان <code>limit</code> سالباً، لن يكون هناك أي تحقق من للعمق.
 +
 
 +
لا يمكن للتابع <code>Marshal</code> تفريغ (dump) الكائنات التالية:
 +
* الوحدات أو الأصناف المجهولة (anonymous Class/Module).
 +
* الكائنات المرتبطة بالنظام (مثل: <code>[[Ruby/Dir|Dir]]</code> و <code>[[Ruby/File/Stat|File::Stat]]</code>و <code>[[Ruby/IO|IO]]</code> و <code>[[Ruby/File|File]]</code> و Socket وغيرها).
 +
* كائنات الأصناف <code>[[Ruby/MatchData|MatchData]]</code> و <code>[[Ruby/Data|Data]]</code> و <code>[[Ruby/Method|Method]]</code> و <code>[[Ruby/UnboundMethod|UnboundMethod]]</code> و <code>[[Ruby/Proc|Proc]]</code> و <code>[[Ruby/Thread|Thread]]</code> و <code>[[Ruby/ThreadGroup|ThreadGroup]]</code> و <code>[[Ruby/Continuation|Continuation]]</code>
 +
* الكائنات التي تعرف توابع مفردة (singleton methods).
  
لا يمكن للتابع <code>Marshal</code> تفريغ الكائنات التالية:
 
الوحدات أو الأصناف المجهولة (anonymous Class/Module). الكائنات المرتبطة بالنظام (مثل: <code>Dir</code> ، <code>File::Stat</code> ، <code>IO</code> ، <code>File</code> ، Socket وهكذا). كائنات الأصناف <code>MatchData</code> و <code>Data</code> و <code>Method</code> و <code>UnboundMethod</code> و <code>Proc</code> و <code>Thread</code> و <code>ThreadGroup</code> و <code>Continuation</code> الكائنات التي تعرف توابع مفردة (singleton methods).
 
 
==البنية العامة==
 
==البنية العامة==
 
<syntaxhighlight lang="ruby">dump( obj [, anIO] , limit=-1 ) → anIO‎</syntaxhighlight>
 
<syntaxhighlight lang="ruby">dump( obj [, anIO] , limit=-1 ) → anIO‎</syntaxhighlight>
 
==المعاملات==
 
==المعاملات==
 
===<code>obj‎</code>===
 
===<code>obj‎</code>===
 +
الكائن المراد سَلسَلته.
  
 
===<code>anIO‎</code>===
 
===<code>anIO‎</code>===
 +
ي حال تمريره، فستُكتب البيانات المُسَلسلة فيه
  
 
===<code>limit‎</code>===
 
===<code>limit‎</code>===
  
 
+
يحدد الحد الأقصى لللعمق.
 
==القيمة المُعادة==
 
==القيمة المُعادة==
 +
يعيد التابع <code>dump</code> البيانات المُسَلسلة.
  
 
==أمثلة==
 
==أمثلة==
مثال على استخدام التابع <code>::dump‎</code>:
+
مثال على استخدام التابع <code>dump‎</code>:
 
<syntaxhighlight lang="ruby">class Klass
 
<syntaxhighlight lang="ruby">class Klass
 
   def initialize(str)
 
   def initialize(str)
سطر 30: سطر 37:
 
     @str
 
     @str
 
   end
 
   end
end‎</syntaxhighlight>
+
end‎</syntaxhighlight>لن تكون هناك أي مخرجات.<syntaxhighlight lang="ruby">o = Klass.new("hello\n")
 +
data = Marshal.dump(o)
 +
obj = Marshal.load(data)
 +
obj.say_hello  #=> "hello\n"</syntaxhighlight>
 
==انظر أيضا==
 
==انظر أيضا==
* التابع <code>[[Ruby/Marshal/load|::load]]</code>: يعيد ظظظ نتيجة تحويل البيانات المُسلسلة (serialized) في المصدر إلى كائن في روبي (ربما مع كائنات ثانوية [subordinate objects] مرتبطة به). قد يكون المصدر إما نسخة من <code>IO</code>، أو كائنًا يستجيب إلى to_str. في حال تمرير الوسيط proc، فسيتم تمرير كل الكائنات إلى proc، أثناء فك تسلسلها (deserialisation).
+
* التابع <code>[[Ruby/Marshal/load|load]]</code>: يعيد نتيجة تحويل البيانات المُسلسلة (serialized) في المصدر إلى كائن في روبي.
  
 
==مصادر==
 
==مصادر==
*[http://ruby-doc.org/core-2.5.1/Marshal.html#method-c-dump قسم  التابع ::dump‎ في الصنف Marshal‎ في توثيق روبي الرسمي.]
+
*[http://ruby-doc.org/core-2.5.1/Marshal.html#method-c-dump قسم  التابع dump‎ في الصنف Marshal‎ في توثيق روبي الرسمي.]

مراجعة 11:54، 24 أكتوبر 2018

يُسلسل (Serializes) التابع dump الوسيط المعطى obj (انظر فقرة البنية العام) وجميع الكائنات المنحدرة منه (descendant objects). في حال تمرير كائن IO، فستُكتب البيانات المُسَلسلة فيه، وإلا فستُعاد البيانات كسلسلة نصية (String).

في حال تمرير الوسيط limit، فسيقتصر التابع dump على سَلسَلة الكائنات الفرعية حتى العمق المحدد. إذا كان limit سالباً، لن يكون هناك أي تحقق من للعمق.

لا يمكن للتابع Marshal تفريغ (dump) الكائنات التالية:

البنية العامة

dump( obj [, anIO] , limit=-1 )  anIO

المعاملات

obj‎

الكائن المراد سَلسَلته.

anIO‎

ي حال تمريره، فستُكتب البيانات المُسَلسلة فيه

limit‎

يحدد الحد الأقصى لللعمق.

القيمة المُعادة

يعيد التابع dump البيانات المُسَلسلة.

أمثلة

مثال على استخدام التابع 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) في المصدر إلى كائن في روبي.

مصادر