الفرق بين المراجعتين ل"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> الوسيط المعطى <code>obj</code> (انظر فقرة البنية العام) وجميع الكائنات المنحدرة منه (descendant objects). في حال تمرير كائن <code>IO</code>، فستُكتب البيانات المُسَلسلة فيه، وإلا فستُعاد البيانات كسلسلة نصية (<code>String</code>).
+
يُسلسل (Serializes) التابع <code>dump</code> الكائن المعطى وجميع الكائنات المنحدرة منه (descendant objects). في حال تمرير كائن من النوع <code>[[Ruby/IO|IO]]</code>، فستُكتب البيانات المُسَلسلة فيه، وإلا فستُعاد البيانات [[Ruby/String|كسلسلة نصية]].
 
+
==البنية العامة==
في حال تمرير الوسيط <code>limit</code>، فسيقتصر التابع <code>dump</code> على سَلسَلة الكائنات الفرعية حتى العمق المحدد. إذا كان <code>limit</code> سالباً، لن يكون هناك أي تحقق من للعمق.
+
<syntaxhighlight lang="ruby">dump( obj [, anIO] , limit=-1 ) → anIO‎</syntaxhighlight>في حال تمرير المعامل <code>limit</code>، فسيقتصر التابع <code>dump</code> على سَلسَلة الكائنات الفرعية حتى العمق المحدد. إذا كان <code>limit</code> سالبًا، لن يكون هناك أي تحقق من للعمق.
  
 
لا يمكن للتابع <code>Marshal</code> تفريغ (dump) الكائنات التالية:
 
لا يمكن للتابع <code>Marshal</code> تفريغ (dump) الكائنات التالية:
* الوحدات أو الأصناف المجهولة (anonymous Class/Module).  
+
*الوحدات أو الأصناف المجهولة (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/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> وغيرها).
* كائنات الأصناف <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>  
+
*نُسَخ الأصناف <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).
+
*الكائنات التي تعرف توابع مفردة (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>:
+
مثال على استخدام التابع <code>dump‎</code>:<syntaxhighlight lang="ruby">class Klass
<syntaxhighlight lang="ruby">class Klass
 
 
   def initialize(str)
 
   def initialize(str)
 
     @str = str
 
     @str = str
سطر 42: سطر 34:
 
obj.say_hello  #=> "hello\n"</syntaxhighlight>
 
obj.say_hello  #=> "hello\n"</syntaxhighlight>
 
==انظر أيضا==
 
==انظر أيضا==
* التابع <code>[[Ruby/Marshal/load|load]]</code>: يعيد نتيجة تحويل البيانات المُسلسلة (serialized) في المصدر إلى كائن في روبي.
+
*التابع <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) في المصدر إلى كائن في روبي.

مصادر