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

من موسوعة حسوب
< Ruby‏ | Marshal
اذهب إلى التنقل اذهب إلى البحث
ط (مراجعة وتدقيق.)
 
(مراجعة متوسطة واحدة بواسطة مستخدم واحد آخر غير معروضة)
سطر 1: سطر 1:
<noinclude>{{DISPLAYTITLE: التابع <code>dump‎</code> الخاص بالصنف <code>Marshal</code> في روبي}}</noinclude>
+
<noinclude>{{DISPLAYTITLE: التابع <code>Marshal.dump‎</code> في روبي}}</noinclude>
 
[[تصنيف: Ruby]]
 
[[تصنيف: Ruby]]
 
[[تصنيف: 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> الكائن المعطى وجميع الكائنات المنحدرة منه (descendant objects). في حال تمرير كائن من النوع <code>[[Ruby/IO|IO]]</code>، فستُكتب البيانات المُسَلسلة فيه، وإلا فستُعاد البيانات [[Ruby/String|كسلسلة نصية]].
 +
==البنية العامة==
 +
<syntaxhighlight lang="ruby">dump( obj [, anIO] , limit=-1 ) → anIO‎</syntaxhighlight>في حال تمرير المعامل <code>limit</code>، فسيقتصر التابع <code>dump</code> على سَلسَلة الكائنات الفرعية حتى العمق المحدد. إذا كان <code>limit</code> سالبًا، لن يكون هناك أي تحقق من للعمق.
  
(لا تنتج أي مخرجات)
+
لا يمكن للتابع <code>Marshal</code> تفريغ (dump) الكائنات التالية:
 
+
*الوحدات أو الأصناف المجهولة (anonymous Class/Module).
لا يمكن للتابع <code>Marshal</code> تفريغ الكائنات التالية:
+
*الكائنات المرتبطة بالنظام (مثل <code>[[Ruby/Dir|Dir]]</code> و <code>[[Ruby/File/Stat|File::Stat]]</code>و <code>[[Ruby/IO|IO]]</code> و <code>[[Ruby/File|File]]</code> و <code>[[Ruby/Socket|Socket]]</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).
+
*نُسَخ الأصناف <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).
<syntaxhighlight lang="ruby">dump( obj [, anIO] , limit=-1 ) → anIO‎</syntaxhighlight>
 
 
==المعاملات==
 
==المعاملات==
 
===<code>obj‎</code>===
 
===<code>obj‎</code>===
 
+
الكائن المراد سَلسَلته.
 
===<code>anIO‎</code>===
 
===<code>anIO‎</code>===
 
+
كائن من النوع <code>[[Ruby/IO|IO]]</code>، في حال تمريره، فستُكتب البيانات المُسَلسلة فيه.
 
===<code>limit‎</code>===
 
===<code>limit‎</code>===
 
+
يحدد الحد الأقصى لعمق الكائنات الفرعية المراد سلسلتها.
 
+
==القيمة المعادة==
==القيمة المُعادة==
+
تُعاد البيانات المُسَلسلة في الكائن <code>[[Ruby/IO|IO]]</code> إن أعطي المعامل <code>anIO</code> أو في سلسلة نصية.
 
 
 
==أمثلة==
 
==أمثلة==
مثال على استخدام التابع <code>::dump‎</code>:
+
مثال على استخدام التابع <code>dump‎</code>:<syntaxhighlight lang="ruby">class Klass
<syntaxhighlight lang="ruby">class Klass
 
 
   def initialize(str)
 
   def initialize(str)
 
     @str = str
 
     @str = str
سطر 30: سطر 29:
 
     @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‎ في توثيق روبي الرسمي.]

المراجعة الحالية بتاريخ 08:12، 17 نوفمبر 2018

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

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

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

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

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

المعاملات

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

مصادر