الفرق بين المراجعتين لصفحة: «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) في المصدر إلى كائن في روبي.