الفرق بين المراجعتين لصفحة: «Ruby/Marshal/dump»
لا ملخص تعديل |
جميل-بيلوني (نقاش | مساهمات) ط مراجعة وتدقيق. |
||
| (مراجعة متوسطة واحدة بواسطة مستخدم واحد آخر غير معروضة) | |||
| سطر 1: | سطر 1: | ||
<noinclude>{{DISPLAYTITLE: التابع <code>dump | <noinclude>{{DISPLAYTITLE: التابع <code>Marshal.dump</code> في روبي}}</noinclude> | ||
[[تصنيف: Ruby]] | [[تصنيف: Ruby]] | ||
[[تصنيف: Ruby Method]] | [[تصنيف: Ruby Method]] | ||
[[تصنيف: Ruby Marshal]] | [[تصنيف: Ruby Marshal]] | ||
يُسلسل (Serializes) التابع <code> | يُسلسل (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>[[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>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> | مثال على استخدام التابع <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| | *التابع <code>[[Ruby/Marshal/load|load]]</code>: يعيد نتيجة تحويل البيانات المُسلسلة (serialized) في المصدر إلى كائن في روبي. | ||
==مصادر== | ==مصادر== | ||
*[http://ruby-doc.org/core-2.5.1/Marshal.html#method-c-dump قسم | *[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) الكائنات التالية:
- الوحدات أو الأصناف المجهولة (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) في المصدر إلى كائن في روبي.