الفرق بين المراجعتين لصفحة: «Ruby/Marshal/dump»
لا ملخص تعديل |
لا ملخص تعديل |
||
| سطر 3: | سطر 3: | ||
[[تصنيف: Ruby Method]] | [[تصنيف: Ruby Method]] | ||
[[تصنيف: Ruby Marshal]] | [[تصنيف: Ruby Marshal]] | ||
يُسلسل (Serializes) التابع <code> | يُسلسل (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). | |||
==البنية العامة== | ==البنية العامة== | ||
<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> | مثال على استخدام التابع <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| | * التابع <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 في توثيق روبي الرسمي.] | ||
مراجعة 11:54، 24 أكتوبر 2018
يُسلسل (Serializes) التابع dump الوسيط المعطى obj (انظر فقرة البنية العام) وجميع الكائنات المنحدرة منه (descendant objects). في حال تمرير كائن IO، فستُكتب البيانات المُسَلسلة فيه، وإلا فستُعاد البيانات كسلسلة نصية (String).
في حال تمرير الوسيط limit، فسيقتصر التابع dump على سَلسَلة الكائنات الفرعية حتى العمق المحدد. إذا كان limit سالباً، لن يكون هناك أي تحقق من للعمق.
لا يمكن للتابع Marshal تفريغ (dump) الكائنات التالية:
- الوحدات أو الأصناف المجهولة (anonymous Class/Module).
- الكائنات المرتبطة بالنظام (مثل:
DirوFile::StatوIOوFileو Socket وغيرها). - كائنات الأصناف
MatchDataوDataوMethodوUnboundMethodوProcوThreadوThreadGroupوContinuation - الكائنات التي تعرف توابع مفردة (singleton methods).
البنية العامة
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) في المصدر إلى كائن في روبي.