الفرق بين المراجعتين لصفحة: «Ruby/Object»

من موسوعة حسوب
أنشأ الصفحة ب'{{DISPLAYTITLE:الصنف <code>Object</code> في روبي}} يعدُّ الصنف <code>Object</code> الجذر الافتراضي لكل كائنات روبي. يَ...'
 
طلا ملخص تعديل
 
(5 مراجعات متوسطة بواسطة مستخدمين اثنين آخرين غير معروضة)
سطر 1: سطر 1:
{{DISPLAYTITLE:الصنف <code>Object</code> في روبي}}
{{DISPLAYTITLE:الصنف <code>Object</code> في روبي}}
يعدُّ الصنف <code>Object</code> الجذر الافتراضي لكل كائنات روبي. يَرِث الصنف <code>Object</code> من الصنف <code>BasicObject</code> ما يسمح بإنشاء تسلسلات هرمية بديلة للكائن. تُتاح توابع الكائن لكل الأصناف ما لم يتم تجاهلها (overridden) صراحةً.
يعدُّ الصنف <code>Object</code> الجذر الافتراضي لكل كائنات روبي. يَرِث الصنف <code>Object</code> من الصنف <code>[[Ruby/BasicObject|BasicObject]]</code> ما يسمح بإنشاء تسلسلات هرمية بديلة للكائن. تُتاح توابع الكائن لكل الأصناف ما لم يتم تجاهلها (overridden) صراحةً.


تندمج الوحدة <code>Kernel</code> ضمن الصنف <code>Object</code> ما يعطي الوصول العام (global) للدّوال المبنية ضمنيًّا في الوحدة. رغم أنَّ توابع النسخة المنشأة من الصنف <code>Object</code> معرَّفةٌ عن طريق الوحدة <code>Kernel</code>، رأينا أن نوثّقهم هنا لمزيد من الوضوح.
تندمج الوحدة <code>[[Ruby/Kernel|Kernel]]</code> ضمن الصنف <code>Object</code> ما يعطي الوصول العام (global) للدّوال المبنية ضمنيًّا في الوحدة. رغم أنَّ توابع النسخة المنشأة من الصنف <code>Object</code> معرَّفةٌ عن طريق الوحدة [[Ruby/Kernel|<code>Kernel</code>]]، رأينا أن نوثّقهم هنا لمزيد من الوضوح.


عند الإشارة (referencing) إلى الثوابت في الأصناف الوارثة من الصنف Object، لا تحتاج إلى أن تستخدم كامل مجال الأسماء (namespace). على سبيل المثال، الإشارة بالمرجعية إلى الثابت <code>File</code> ضمن الصنف <code>YourClass</code> سيجد الصنف ذا المستوى الأعلى من <code>File</code>.
عند الإشارة (referencing) إلى الثوابت في الأصناف الوارثة من الصنف <code>Object</code>، لا تحتاج إلى أن تستخدم كامل مجال الأسماء (namespace). على سبيل المثال، الإشارة بالمرجعية إلى الثابت <code>File</code> ضمن الصنف <code>YourClass</code> سيجد الصنف ذا المستوى الأعلى من <code>File</code>.


في توثيق كل تابع من توابع الصنف <code>Object</code>، يشير المعامل <code>symbol</code> إلى رمزٍ يكون إما سلسلةً نصيةً مقتبسةً (quoted) أو الصنف <code>Symbol</code> (مثل name:).
في توثيق كل تابع من توابع الصنف <code>Object</code>، يشير المعامل <code>symbol</code> إلى رمزٍ يكون إما [[Ruby/String|سلسلةً نصيةً]] مقتبسةً (quoted) أو [[Ruby/Symbol|رمزًا]] (مثل <code>name:</code>).
 
==الثوابت==
== الثوابت ==
===<code>ARGF</code>===
 
=== <code>ARGF</code> ===
هو مجرى (stream) صُمِّم ليُستخدَم في الملفات البرمجية (scritps) التي تُعالج الملفات المُمرَّرة إليها على شكل وسائط في سطر الأوامر (command-line arguments)، أو المُمرَّرة عبر مجرى الدخل القياسي (STDIN).
هو مجرى (stream) صُمِّم ليُستخدَم في الملفات البرمجية (scritps) التي تُعالج الملفات المُمرَّرة إليها على شكل وسائط في سطر الأوامر (command-line arguments)، أو المُمرَّرة عبر مجرى الدخل القياسي (STDIN).


ألقِ نظرة على صفحة الصنف <code>ARGF</code> لمزيدٍ من المعلومات.
ألقِ نظرة على صفحة الصنف <code>[[Ruby/ARGF|ARGF]]</code> لمزيدٍ من المعلومات.
 
===<code>ARGV</code>===
=== <code>ARGV</code> ===
يحتوي على وسائط سطر الأوامر المستخدمة في تشغيل روبي. يمكن استخدام مكتبةٍ مثل <code>OptionParser</code> لمعالجة وسائط سطر الأوامر.
يحتوي على وسائط سطر الأوامر المستخدمة في تشغيل روبي. يمكن استخدام مكتبةٍ مثل <code>OptionParser</code> لمعالجة وسائط سطر الأوامر.
 
===<code>Bignum</code>===
=== <code>Bignum</code> ===
===<code>DATA</code>===
 
=== <code>DATA</code> ===
هو ملفٌّ يحوي قسم المعلومات الخاص بالملف المنفَّذ. استخدِم <code>__END__</code> لإنشاء قسم معلوماتٍ:<syntaxhighlight lang="ruby">
هو ملفٌّ يحوي قسم المعلومات الخاص بالملف المنفَّذ. استخدِم <code>__END__</code> لإنشاء قسم معلوماتٍ:<syntaxhighlight lang="ruby">
$ cat t.rb
$ cat t.rb
سطر 30: سطر 25:
hello world!
hello world!
</syntaxhighlight>
</syntaxhighlight>
 
===<code>ENV</code>===
=== <code>ENV</code> ===
يشبه دوال التجزئة (hash-like accessor) لبيئة المتغيرات.
يشبه دوال التجزئة (hash-like accessor) لبيئة المتغيرات.


ألقِ نظرة على صفحة الصنف <code>ENV</code> لمزيدٍ من المعلومات.
ألقِ نظرة على صفحة الصنف <code>[[Ruby/ENV|ENV]]</code> لمزيدٍ من المعلومات.
 
===<code>FALSE</code>===
=== <code>FALSE</code> ===
هو اسمٌ بديلٌ مهمل (obsolete alias) للقيمة <code>false</code>.
هو اسمٌ بديلٌ مهمل (obsolete alias) للقيمة <code>false</code>.
 
===<code>Fixnum</code>===
=== <code>Fixnum</code> ===
===<code>NIL</code>===
 
=== <code>NIL</code> ===
هو اسمٌ بديلٌ مهمل للقيمة <code>nil</code>.
هو اسمٌ بديلٌ مهمل للقيمة <code>nil</code>.
 
===<code>RUBY_COPYRIGHT</code>===
=== <code>RUBY_COPYRIGHT</code> ===
يمثّل سلسلةً نصيةً تحتوي حقوق النشر لبرنامج روبي.
يمثّل سلسلةً نصيةً تحتوي حقوق النشر لبرنامج روبي.
 
===<code>RUBY_DESCRIPTION</code>===
=== <code>RUBY_DESCRIPTION</code> ===
يمثّل سلسلةً نصيةً تحتوي إصدار روبي الكامل، مثل تلك الناتجة عن تنفيذ الأمر <code>ruby -v</code> في سطر الأوامر.
يمثّل سلسلةً نصيةً تحتوي إصدار روبي الكامل، مثل تلك الناتجة عن تنفيذ الأمر <code>ruby -v</code> في سطر الأوامر.
 
===<code>RUBY_ENGINE</code>===
=== <code>RUBY_ENGINE</code> ===
يمثّل المحرِّك أو المفسِّر الذي تستخدمه روبي.
يمثّل المحرِّك أو المفسِّر الذي تستخدمه روبي.
 
===<code>RUBY_ENGINE_VERSION</code>===
=== <code>RUBY_ENGINE_VERSION</code> ===
يمثّل إصدار المحرِّك أو المفسِّر الذي تستخدمه روبي.
يمثّل إصدار المحرِّك أو المفسِّر الذي تستخدمه روبي.
 
===<code>RUBY_PATCHLEVEL</code>===
=== <code>RUBY_PATCHLEVEL</code> ===
يمثّل مستوى التصحيح (patch level) لهذا الإصدار من روبي. إذا كان الإصدار نسخةً تطويريةً من روبي، فإنَّ مستوى الرقعة سيكون مساويًا 1-.
يمثّل مستوى التصحيح (patch level) لهذا الإصدار من روبي. إذا كان الإصدار نسخةً تطويريةً من روبي، فإنَّ مستوى الرقعة سيكون مساويًا 1-.
 
===<code>RUBY_PLATFORM</code>===
=== <code>RUBY_PLATFORM</code> ===
يمثّل منصة هذا الإصدار من روبي.
يمثّل منصة هذا الإصدار من روبي.
 
===<code>RUBY_RELEASE_DATE</code>===
=== <code>RUBY_RELEASE_DATE</code> ===
يمثّل تاريخ إطلاق هذا الإصدار من روبي.
يمثّل تاريخ إطلاق هذا الإصدار من روبي.
 
===<code>RUBY_REVISION</code>===
=== <code>RUBY_REVISION</code> ===
يمثّل رقم التنقيح في <code>SVN</code> لهذا الإصدار من روبي.
يمثّل رقم التنقيح في <code>SVN</code> لهذا الإصدار من روبي.
 
===<code>RUBY_VERSION</code>===
=== <code>RUBY_VERSION</code> ===
يمثّل الإصدار المُشغَّل حاليًا من روبي.
يمثّل الإصدار المُشغَّل حاليًا من روبي.
 
===<code>STDERR</code>===
=== <code>STDERR</code> ===
يحتفظ بمجرى الخطأ القياسي (stderr) الأصلي.
يحتفظ بمجرى الخطأ القياسي (stderr) الأصلي.
 
===<code>STDIN</code>===
=== <code>STDIN</code> ===
يحتفظ بمجرى الدخل القياسي (stdin) الأصلي.
يحتفظ بمجرى الدخل القياسي (stdin) الأصلي.
 
===<code>STDOUT</code>===
=== <code>STDOUT</code> ===
يحتفظ بمجرى الخرج القياسي (stdout) الأصلي.
يحتفظ بمجرى الخرج القياسي (stdout) الأصلي.
 
===<code>TOPLEVEL_BINDING</code>===
=== <code>TOPLEVEL_BINDING</code> ===
يمثل نطاق المستوى الأعلى للصنف BINDING.
يمثل نطاق المستوى الأعلى للصنف BINDING.
 
===<code>TRUE</code>===
=== <code>TRUE</code> ===
هو اسمٌ بديلٌ مهمل للقيمة <code>true</code>.
هو اسمٌ بديلٌ مهمل للقيمة <code>true</code>.
==توابع النسخة الخاصة (Public Instance Methods)==
===<code>[[Ruby/Object/21~|~!]]</code>===
يتحقق من عدم تساوي كائنين (باستخدام التابع <code>=~</code>).
===<code>[[Ruby/Object/3C-3D-3E|<=>]]</code>===
يتحقق من تساوي كائنين بين بعضهما بعضًا (يشبه المعامل <code>==</code>).
===<code>[[Ruby/Object/3D-3D-3D|===]]</code>===
يتحقق من تساوي كائنين بشكل صارم.
===<code>[[Ruby/Object/3D~|~=]]</code>===
يتحقّق من تطابق نمطي كائنين (Pattern Match).
===<code>[[Ruby/Object/class|class]]</code>===
يعيد صنف الكائن المعطى.
===<code>[[Ruby/Object/clone|clone]]</code>===
يُنتج نسخةً سطحيةً (shallow copy) من الكائن المعطى.
===<code>[[Ruby/Object/define singleton method|define_singleton_method]]</code>===
يُعرِّف تابعًا منفردًا (singleton method) في المستقبل (receiver).
===<code>[[Ruby/Object/display|display]]</code>===
يَطبع الكائن الذي استدعي معه على المنفذ (port) المعطى (يساوي افتراضيًا <code><$</code>).
===<code>[[Ruby/Object/dup|dup]]</code>===
ينتج نسخةً سطحية (shallow copy) من الكائن.
===<code>[[Ruby/Object/enum for|enum_for]]</code>===
يُنشئ نسخةً من الصنف Enumerator الذي يجري عملية عدٍّ (enumerate) وتكرار عبر استدعاء التابع المُمرَّر إليها مع كائنٍ محدَّد، وتمرير وسائط إن أعطيت.


== توابع النسخة الخاصة (Public Instance Methods) ==
=== <code>[[Ruby/Object/3D-3D|==]]</code> ===
 
يتحقَّق من تساوي كائنين مع بعضهما بعضًا.
=== <code>~!</code> ===
يتحقق المعامل <code>!~</code> من عدم تساوي كائنين (باستخدام التابع <code>=~</code>).
 
=== <code><=></code> ===
يتحقق المعامل <code><=></code> من تساوي كائنين بين بعضهما بعضًا (يشبه المعامل <code>==</code>).
 
=== <code>===</code> ===
يتحقق المعامل <code>===</code> من تساوي كائنين بشكل صارم.
 
=== <code>~=</code> ===
يتحقّق المعامل <code>~=</code> من تطابق نمطي كائنين (Pattern Match).
 
=== <code>class</code> ===
يعيد التابع <code>class</code> صنف الكائن المعطى.
 
=== <code>clone</code> ===
يُنتج التابع <code>clone</code> نسخةً سطحيةً (shallow copy) من الكائن المعطى.
 
=== <code>define_singleton_method</code> ===
يُعرِّف التابع <code>define_singleton_method</code> تابعًا منفردًا (singleton method) في المستقبل (receiver).
 
=== <code>display</code> ===
يَطبع التابع <code>display</code> الكائن الذي استدعي معه على المنفذ (port) المعطى (يساوي افتراضيًا <code><$</code>).
 
=== <code>dup</code> ===
ينتج التابع <code>dup</code> نسخةً سطحية (shallow copy) من الكائن.
 
=== <code>enum_for</code> ===
يُنشئ التابع <code>enum_for</code> نسخةً من الصنف Enumerator الذي يجري عملية عدٍّ (enumerate) وتكرار عبر استدعاء التابع المُمرَّر إليها مع كائنٍ محدَّد، وتمرير وسائط إن أعطيت.
 
=== <code>?eql</code> ===
يتحقَّق التابع <code>?eql</code> من استخدام كلا الكائنين نفس مفتاح التجزئة (hash key).
 
=== <code>extend</code> ===
يُضيف التابع <code>extend</code> توابع النسخة (instance) من كُلِّ وحدةٍ مُرِّرت إليه إلى الكائن الذي استدعي معه.
 
=== <code>freeze</code> ===
يمنع التابع <code>freeze</code> إجراء تعديلاتٍ إضافيةٍ على الكائن الذي استدعي معه.
 
=== <code>?frozen</code> ===
يتحقَّق التابع <code>?frozen</code> إن كان الكائن في  حالة تجميد أم لا.
 
=== <code>inspect</code> ===
يُعيد التابع inspect سلسلةً نصيةً تحتوي تمثيلًا  يفهمه البشر للكائن الذي استدعي معه.
 
=== <code>?instance_of</code> ===
يتحقَّق التابع <code>?instance_of</code> إذا كان الكائن الذي استدعي معه نسخةً من الصِّنف المُمرَّر إليه.
 
=== <code>?instance_variable_defined</code> ===
يتحقَّق التابع <code>?instance_variable_defined</code> إذا كان متغيِّر النسخة (instance variable) المُمرَّر إليه مُعرَّفًا في الكائن المعطى.
 
=== <code>instance_variable_get</code> ===
يجلب التابع <code>instance_variable_get</code> قيمة مُتغيِّر النسخة (instance variable) المُمرَّر إليه من الكائن المعطى.
 
=== <code>instance_variable_set</code> ===
يُعيِّن التابع <code>instance_variable_set</code> قيمة متغيِّر نسخةٍ (instance variable) محدِّدٍ إلى قيمة معيَّنة في الكائن المُعطى.
 
=== <code>instance_variables</code> ===
يجلب التابع <code>instance_variables</code> جميع أسماء متغيرات النسخة (instance variable) للمستقبل (receiver) المعطى.
 
=== <code>?is_a</code> ===
يتحقَّق التابع <code>?is_a</code> إن كان الصنف المُمرَّر إليه هو نفسه صنف الكائن الذي استدعي معه، أو إن كان هذا الصنف أحد الأصناف العليا (superclasses) للكائن المعطى أو الوحدات المُضمَّنة في هذا الكائن.
 
=== <code>itself</code> ===
يُعيد التابع <code>itself</code> الكائن المستقبل (receiver).
 
=== <code>?kind_of</code> ===
يتحقَّق التابع <code>?kind_of</code> إن كان الصنف المُمرَّر إليه هو نفسه صنف الكائن المعطى، أو أنه واحدٌ من الأصناف العليا  (superclasses) لذلك الكائن أو الوحدات المُضمَّنة فيه.
 
=== <code>method</code> ===
يبحث التابع <code>method</code> عن تابعٍ باسمٍ محدَّد في الكائن المعطى بوصفه مستقبلًا (receiver).
 
=== <code>methods</code> ===
يُعيد التابع <code>methods</code> قائمةً بالتوابع العامَّة والمحميَّة للكائن المعطى.
 
=== <code>?nil</code> ===
يتحقَّق التابع <code>?nil</code> فيما إذا كان الكائن المعطى هو nil أم لا.
 
=== <code>object_id</code> ===
يعيد التابع <code>object_id</code> مُعرِّفا عدديًا للكائن الذي استُدعي معه.
 
=== <code>private_methods</code> ===
يُعيد التابع <code>private_methods</code> قائمةً بالتوابع الخاصة (private methods) التي يمتلك الكائن الذي استدعي معه الوصول إليها.
 
=== <code>protected_methods</code> ===
يُعيد التابع <code>protected_methods</code> قائمةً بالتوابع المحميَّة (protected methods) التي يمتلك الكائن الذي استدعي معه الوصول إليها.
 
=== <code>public_method</code> ===
يبحث التابع <code>public_method</code> عن التوابع العامة فقط بشكل مشابه لعمل التابع <code>method</code>.
 
=== <code>public_methods</code> ===
يُعيد التابع <code>public_methods</code> قائمةً بالتوابع العامَّة (public methods) التي يمتلك الكائن الذي استدعي معه الوصول إليها.
 
=== <code>public_send</code> ===
يَستدعي التابع <code>public_send</code> التابع المعرَّف برمزٍ (symbol) محدَّدٍ ويُنفَّذه تلقائيًا مع تمرير أي معاملاتٍ معطاة.
 
=== <code>remove_instance_variable</code> ===
يَحذِف التابع <code>remove_instance_variable</code> متغيِّر نسخةٍ باسمٍ محدَّدٍ من الكائن الذي استدعي معه ويُعيد قيمة ذلك المتغيِّر.
 
=== <code>?respond_to</code> ===
يتحقَّق التابع <code>?respond_to</code> من استجابة الكائن الذي استدعي معه للتابع المُمرَّر إليه.
 
=== <code>?respond_to_missing</code> ===
يُصنَّف التابع <code>?respond_to_missing</code> من التوابع الخطَّافة (Hook method)، إذ يتحقَّق فيما إذا كان الكائن المعطى يستجيب إلى تابعٍ محدِّدٍ أم لا.
 
=== <code>send</code> ===
يَستدعي التابع <code>send</code> التابع المعرَّف برمزٍ (symbol) ويُنفَّذه تلقائيًا ويمرِّر إليه أي معاملاتٍ معطاة.
 
=== <code>singleton_class</code> ===
يُعيد التابع <code>singleton_class</code> صنف الكائن المُنفرد (singleton class) للكائن الذي استدعي معه.
 
=== <code>singleton_method</code> ===
يبحث التابع <code>singleton_method</code> في التوابع المنفردة فقط بطريقة مشابهة للتابع <code>method</code>.
 
=== <code>singleton_methods</code> ===
يُعيد التابع <code>singleton_methods</code> مصفوفةً تحوي أسماء توابع الكائن المنفردة (singleton methods).
 
=== <code>taint</code> ===
يصم التابع <code>taint</code> الكائن الذي استدعي معه بأنه كائنٌ فاسد (tainted).
 
=== <code>?tainted</code> ===
يتحقَّق التابع <code>?tainted</code> إذا كان التابع فاسدًا (tainted).
 
=== <code>tap</code> ===
يُدخل التابع <code>tap</code> الكائن المعطى إلى الكتلة (block)، ثم يعيده.
 
=== <code>to_enum</code> ===
يُنشئ التابع <code>to_enum</code> نسخةً من الصنف <code>Enumerator</code> التي ستُجري عملية عدٍّ (enumerate) عبر استدعاء تابعٍ محدَّدٍ مع الكائن المعطى، وتمرير وسائط إن أعطيت.
 
=== <code>to_s</code> ===
يُعيد التابع <code>to_s</code> سلسلةً نصيةً تُمثِّل الكائن الذي استدعي معه.
 
=== <code>trust</code> ===
يعدُّ <code>trust</code> تابعًا مهملًا (Deprecated method) وهو مكافئٌ تمامًا للتابع <code>untaint</code>.
 
=== <code>untaint</code> ===
يُلغي التابع <code>untaint</code> علامة الحالة الفاسدة (tainted) من الكائن الذي استدعي معه.
 
=== <code>untrust</code> ===
يعدُّ <code>untrust</code> تابعًا مهملًا (Deprecated method) وهو مكافئٌ تمامًا للتابع <code>taint</code>.
 
=== <code>?untrusted</code> ===
يعتبر <code>?untrusted</code> تابعًا غير منصوحٍ به (Deprecated method) وهو مكافئٌ للتابع <code>?tainted</code>.


=== <code>yield_self</code> ===
=== <code>[[Ruby/Object/equal-3F|?equal]]</code> ===
يُدخل التابع <code>yield_self</code> الكائن المعطى إلى الكتلة (block) ويُعيد ناتج تنفيذ هذه الكتلة.
يُستخدم في تحديد هويّة الكائن.


== مصادر ==
===<code>[[Ruby/Object/eql-3F|?eql]]</code>===
* [http://ruby-doc.org/core-2.5.1/Object.html صفحة الصنف Object في توثيق روبي الرسمي.]
يتحقَّق  من استخدام كلا الكائنين نفس مفتاح التجزئة (hash key).
===<code>[[Ruby/Object/extend|extend]]</code>===
يُضيف توابع النسخة (instance) من كُلِّ وحدةٍ مُرِّرت إليه إلى الكائن الذي استدعي معه.
===<code>[[Ruby/Object/freeze|freeze]]</code>===
يمنع إجراء تعديلاتٍ إضافيةٍ على الكائن الذي استدعي معه.
===<code>[[Ruby/Object/frozen-3F|?frozen]]</code>===
يتحقَّق إن كان الكائن في  حالة تجميد أم لا.
===<code>[[Ruby/Object/inspect|inspect]]</code>===
يُعيد سلسلةً نصيةً تحتوي تمثيلًا  يفهمه البشر للكائن الذي استدعي معه.
===<code>[[Ruby/Object/instance of-3F|?instance_of]]</code>===
يتحقَّق إذا كان الكائن الذي استدعي معه نسخةً من الصِّنف المُمرَّر إليه.
===<code>[[Ruby/Object/instance variable defined-3F|?instance_variable_defined]]</code>===
يتحقَّق إذا كان متغيِّر النسخة (instance variable) المُمرَّر إليه مُعرَّفًا في الكائن المعطى.
===<code>[[Ruby/Object/instance variable get|instance_variable_get]]</code>===
يجلب قيمة مُتغيِّر النسخة (instance variable) المُمرَّر إليه من الكائن المعطى.
===<code>[[Ruby/Object/instance variable set|instance_variable_set]]</code>===
يُعيِّن قيمة متغيِّر نسخةٍ (instance variable) محدِّدٍ إلى قيمة معيَّنة في الكائن المُعطى.
===<code>[[Ruby/Object/instance variables|instance_variables]]</code>===
يجلب جميع أسماء متغيرات النسخة (instance variable) للمستقبل (receiver) المعطى.
===<code>[[Ruby/Object/is a-3F|?is_a]]</code>===
يتحقَّق إن كان الصنف المُمرَّر إليه هو نفسه صنف الكائن الذي استدعي معه، أو إن كان هذا الصنف أحد الأصناف العليا (superclasses) للكائن المعطى أو الوحدات المُضمَّنة في هذا الكائن.
===<code>[[Ruby/Object/itself|itself]]</code>===
يُعيد الكائن المستقبل (receiver).
===<code>[[Ruby/Object/kind of-3F|?kind_of]]</code>===
يتحقَّق إن كان الصنف المُمرَّر إليه هو نفسه صنف الكائن المعطى، أو أنه واحدٌ من الأصناف العليا  (superclasses) لذلك الكائن أو الوحدات المُضمَّنة فيه.
===<code>[[Ruby/Object/method|method]]</code>===
يبحث عن تابعٍ باسمٍ محدَّد في الكائن المعطى بوصفه مستقبلًا (receiver).
===<code>[[Ruby/Object/methods|methods]]</code>===
يُعيد قائمةً بالتوابع العامَّة والمحميَّة للكائن المعطى.
===<code>[[Ruby/Object/nil-3F|?nil]]</code>===
يتحقَّق فيما إذا كان الكائن المعطى هو nil أم لا.
===<code>[[Ruby/Object/object id|object_id]]</code>===
يعيد مُعرِّفا عدديًا للكائن الذي استُدعي معه.
===<code>[[Ruby/Object/private methods|private_methods]]</code>===
يُعيد التابع قائمةً بالتوابع الخاصة (private methods) التي يمتلك الكائن الذي استدعي معه الوصول إليها.
===<code>[[Ruby/Object/protected methods|protected_methods]]</code>===
يُعيد قائمةً بالتوابع المحميَّة (protected methods) التي يمتلك الكائن الذي استدعي معه الوصول إليها.
===<code>[[Ruby/Object/public method|public_method]]</code>===
يبحث عن التوابع العامة فقط بشكل مشابه لعمل التابع <code>method</code>.
===<code>[[Ruby/Object/public methods|public_methods]]</code>===
يُعيد قائمةً بالتوابع العامَّة (public methods) التي يمتلك الكائن الذي استدعي معه الوصول إليها.
===<code>[[Ruby/Object/public send|public_send]]</code>===
يَستدعي التابع المعرَّف برمزٍ (symbol) محدَّدٍ ويُنفَّذه تلقائيًا مع تمرير أي معاملاتٍ معطاة.
===<code>[[Ruby/Object/remove instance variable|remove_instance_variable]]</code>===
يَحذِف متغيِّر نسخةٍ باسمٍ محدَّدٍ من الكائن الذي استدعي معه ويُعيد قيمة ذلك المتغيِّر.
===<code>[[Ruby/Object/respond to-3F|?respond_to]]</code>===
يتحقَّق من استجابة الكائن الذي استدعي معه للتابع المُمرَّر إليه.
===<code>[[Ruby/Object/respond to missing-3F|?respond_to_missing]]</code>===
يُصنَّف من التوابع الخطَّافة (Hook method)، إذ يتحقَّق فيما إذا كان الكائن المعطى يستجيب إلى تابعٍ محدِّدٍ أم لا.
===<code>[[Ruby/Object/send|send]]</code>===
يَستدعي التابع المعرَّف برمزٍ (symbol) ويُنفَّذه تلقائيًا ويمرِّر إليه أي معاملاتٍ معطاة.
===<code>[[Ruby/Object/singleton class|singleton_class]]</code>===
يُعيد صنف الكائن المُنفرد (singleton class) للكائن الذي استدعي معه.
===<code>[[Ruby/Object/singleton method|singleton_method]]</code>===
يبحث في التوابع المنفردة فقط بطريقة مشابهة للتابع <code>method</code>.
===<code>[[Ruby/Object/singleton methods|singleton_methods]]</code>===
يُعيد مصفوفةً تحوي أسماء توابع الكائن المنفردة (singleton methods).
===<code>[[Ruby/Object/taint|taint]]</code>===
يصم الكائن الذي استدعي معه بأنه كائنٌ فاسد (tainted).
===<code>[[Ruby/Object/tainted-3F|?tainted]]</code>===
يتحقَّق إذا كان التابع فاسدًا (tainted).
===<code>[[Ruby/Object/tap|tap]]</code>===
يُدخل الكائن المعطى إلى الكتلة (block)، ثم يعيده.
===<code>[[Ruby/Object/to enum|to_enum]]</code>===
يُنشئ نسخةً من الصنف <code>Enumerator</code> التي ستُجري عملية عدٍّ (enumerate) عبر استدعاء تابعٍ محدَّدٍ مع الكائن المعطى، وتمرير وسائط إن أعطيت.
===<code>[[Ruby/Object/to s|to_s]]</code>===
يُعيد سلسلةً نصيةً تُمثِّل الكائن الذي استدعي معه.
===<code>[[Ruby/Object/trust|trust]]</code>===
يعدُّ تابعًا مهملًا (Deprecated method) وهو مكافئٌ تمامًا للتابع <code>untaint</code>.
===<code>[[Ruby/Object/untaint|untaint]]</code>===
يُلغي علامة الحالة الفاسدة (tainted) من الكائن الذي استدعي معه.
===<code>[[Ruby/Object/untrust|untrust]]</code>===
يعدُّ تابعًا مهملًا (Deprecated method) وهو مكافئٌ تمامًا للتابع <code>taint</code>.
===<code>[[Ruby/Object/untrusted-3F|?untrusted]]</code>===
يعتبر تابعًا غير منصوحٍ به (Deprecated method) وهو مكافئٌ للتابع <code>?tainted</code>.
===<code>[[Ruby/Object/yield self|yield_self]]</code>===
يُدخل الكائن المعطى إلى الكتلة (block) ويُعيد ناتج تنفيذ هذه الكتلة.
==مصادر==
*[http://ruby-doc.org/core-2.5.1/Object.html صفحة الصنف Object في توثيق روبي الرسمي.]
[[تصنيف:Ruby]]
[[تصنيف:Ruby]]
[[تصنيف:Ruby Class]]
[[تصنيف:Ruby Class]]
[[تصنيف:Ruby Object]]
[[تصنيف:Ruby Object]]

المراجعة الحالية بتاريخ 07:32، 30 مارس 2019

يعدُّ الصنف Object الجذر الافتراضي لكل كائنات روبي. يَرِث الصنف Object من الصنف BasicObject ما يسمح بإنشاء تسلسلات هرمية بديلة للكائن. تُتاح توابع الكائن لكل الأصناف ما لم يتم تجاهلها (overridden) صراحةً.

تندمج الوحدة Kernel ضمن الصنف Object ما يعطي الوصول العام (global) للدّوال المبنية ضمنيًّا في الوحدة. رغم أنَّ توابع النسخة المنشأة من الصنف Object معرَّفةٌ عن طريق الوحدة Kernel، رأينا أن نوثّقهم هنا لمزيد من الوضوح.

عند الإشارة (referencing) إلى الثوابت في الأصناف الوارثة من الصنف Object، لا تحتاج إلى أن تستخدم كامل مجال الأسماء (namespace). على سبيل المثال، الإشارة بالمرجعية إلى الثابت File ضمن الصنف YourClass سيجد الصنف ذا المستوى الأعلى من File.

في توثيق كل تابع من توابع الصنف Object، يشير المعامل symbol إلى رمزٍ يكون إما سلسلةً نصيةً مقتبسةً (quoted) أو رمزًا (مثل name:).

الثوابت

ARGF

هو مجرى (stream) صُمِّم ليُستخدَم في الملفات البرمجية (scritps) التي تُعالج الملفات المُمرَّرة إليها على شكل وسائط في سطر الأوامر (command-line arguments)، أو المُمرَّرة عبر مجرى الدخل القياسي (STDIN).

ألقِ نظرة على صفحة الصنف ARGF لمزيدٍ من المعلومات.

ARGV

يحتوي على وسائط سطر الأوامر المستخدمة في تشغيل روبي. يمكن استخدام مكتبةٍ مثل OptionParser لمعالجة وسائط سطر الأوامر.

Bignum

DATA

هو ملفٌّ يحوي قسم المعلومات الخاص بالملف المنفَّذ. استخدِم __END__ لإنشاء قسم معلوماتٍ:

$ cat t.rb
puts DATA.gets
__END__
hello world!

$ ruby t.rb
hello world!

ENV

يشبه دوال التجزئة (hash-like accessor) لبيئة المتغيرات.

ألقِ نظرة على صفحة الصنف ENV لمزيدٍ من المعلومات.

FALSE

هو اسمٌ بديلٌ مهمل (obsolete alias) للقيمة false.

Fixnum

NIL

هو اسمٌ بديلٌ مهمل للقيمة nil.

RUBY_COPYRIGHT

يمثّل سلسلةً نصيةً تحتوي حقوق النشر لبرنامج روبي.

RUBY_DESCRIPTION

يمثّل سلسلةً نصيةً تحتوي إصدار روبي الكامل، مثل تلك الناتجة عن تنفيذ الأمر ruby -v في سطر الأوامر.

RUBY_ENGINE

يمثّل المحرِّك أو المفسِّر الذي تستخدمه روبي.

RUBY_ENGINE_VERSION

يمثّل إصدار المحرِّك أو المفسِّر الذي تستخدمه روبي.

RUBY_PATCHLEVEL

يمثّل مستوى التصحيح (patch level) لهذا الإصدار من روبي. إذا كان الإصدار نسخةً تطويريةً من روبي، فإنَّ مستوى الرقعة سيكون مساويًا 1-.

RUBY_PLATFORM

يمثّل منصة هذا الإصدار من روبي.

RUBY_RELEASE_DATE

يمثّل تاريخ إطلاق هذا الإصدار من روبي.

RUBY_REVISION

يمثّل رقم التنقيح في SVN لهذا الإصدار من روبي.

RUBY_VERSION

يمثّل الإصدار المُشغَّل حاليًا من روبي.

STDERR

يحتفظ بمجرى الخطأ القياسي (stderr) الأصلي.

STDIN

يحتفظ بمجرى الدخل القياسي (stdin) الأصلي.

STDOUT

يحتفظ بمجرى الخرج القياسي (stdout) الأصلي.

TOPLEVEL_BINDING

يمثل نطاق المستوى الأعلى للصنف BINDING.

TRUE

هو اسمٌ بديلٌ مهمل للقيمة true.

توابع النسخة الخاصة (Public Instance Methods)

~!

يتحقق من عدم تساوي كائنين (باستخدام التابع =~).

<=>

يتحقق من تساوي كائنين بين بعضهما بعضًا (يشبه المعامل ==).

===

يتحقق من تساوي كائنين بشكل صارم.

~=

يتحقّق من تطابق نمطي كائنين (Pattern Match).

class

يعيد صنف الكائن المعطى.

clone

يُنتج نسخةً سطحيةً (shallow copy) من الكائن المعطى.

define_singleton_method

يُعرِّف تابعًا منفردًا (singleton method) في المستقبل (receiver).

display

يَطبع الكائن الذي استدعي معه على المنفذ (port) المعطى (يساوي افتراضيًا <$).

dup

ينتج نسخةً سطحية (shallow copy) من الكائن.

enum_for

يُنشئ نسخةً من الصنف Enumerator الذي يجري عملية عدٍّ (enumerate) وتكرار عبر استدعاء التابع المُمرَّر إليها مع كائنٍ محدَّد، وتمرير وسائط إن أعطيت.

==

يتحقَّق من تساوي كائنين مع بعضهما بعضًا.

?equal

يُستخدم في تحديد هويّة الكائن.

?eql

يتحقَّق من استخدام كلا الكائنين نفس مفتاح التجزئة (hash key).

extend

يُضيف توابع النسخة (instance) من كُلِّ وحدةٍ مُرِّرت إليه إلى الكائن الذي استدعي معه.

freeze

يمنع إجراء تعديلاتٍ إضافيةٍ على الكائن الذي استدعي معه.

?frozen

يتحقَّق إن كان الكائن في  حالة تجميد أم لا.

inspect

يُعيد سلسلةً نصيةً تحتوي تمثيلًا  يفهمه البشر للكائن الذي استدعي معه.

?instance_of

يتحقَّق إذا كان الكائن الذي استدعي معه نسخةً من الصِّنف المُمرَّر إليه.

?instance_variable_defined

يتحقَّق إذا كان متغيِّر النسخة (instance variable) المُمرَّر إليه مُعرَّفًا في الكائن المعطى.

instance_variable_get

يجلب قيمة مُتغيِّر النسخة (instance variable) المُمرَّر إليه من الكائن المعطى.

instance_variable_set

يُعيِّن قيمة متغيِّر نسخةٍ (instance variable) محدِّدٍ إلى قيمة معيَّنة في الكائن المُعطى.

instance_variables

يجلب جميع أسماء متغيرات النسخة (instance variable) للمستقبل (receiver) المعطى.

?is_a

يتحقَّق إن كان الصنف المُمرَّر إليه هو نفسه صنف الكائن الذي استدعي معه، أو إن كان هذا الصنف أحد الأصناف العليا (superclasses) للكائن المعطى أو الوحدات المُضمَّنة في هذا الكائن.

itself

يُعيد الكائن المستقبل (receiver).

?kind_of

يتحقَّق إن كان الصنف المُمرَّر إليه هو نفسه صنف الكائن المعطى، أو أنه واحدٌ من الأصناف العليا  (superclasses) لذلك الكائن أو الوحدات المُضمَّنة فيه.

method

يبحث عن تابعٍ باسمٍ محدَّد في الكائن المعطى بوصفه مستقبلًا (receiver).

methods

يُعيد قائمةً بالتوابع العامَّة والمحميَّة للكائن المعطى.

?nil

يتحقَّق فيما إذا كان الكائن المعطى هو nil أم لا.

object_id

يعيد مُعرِّفا عدديًا للكائن الذي استُدعي معه.

private_methods

يُعيد التابع قائمةً بالتوابع الخاصة (private methods) التي يمتلك الكائن الذي استدعي معه الوصول إليها.

protected_methods

يُعيد قائمةً بالتوابع المحميَّة (protected methods) التي يمتلك الكائن الذي استدعي معه الوصول إليها.

public_method

يبحث عن التوابع العامة فقط بشكل مشابه لعمل التابع method.

public_methods

يُعيد قائمةً بالتوابع العامَّة (public methods) التي يمتلك الكائن الذي استدعي معه الوصول إليها.

public_send

يَستدعي التابع المعرَّف برمزٍ (symbol) محدَّدٍ ويُنفَّذه تلقائيًا مع تمرير أي معاملاتٍ معطاة.

remove_instance_variable

يَحذِف متغيِّر نسخةٍ باسمٍ محدَّدٍ من الكائن الذي استدعي معه ويُعيد قيمة ذلك المتغيِّر.

?respond_to

يتحقَّق من استجابة الكائن الذي استدعي معه للتابع المُمرَّر إليه.

?respond_to_missing

يُصنَّف من التوابع الخطَّافة (Hook method)، إذ يتحقَّق فيما إذا كان الكائن المعطى يستجيب إلى تابعٍ محدِّدٍ أم لا.

send

يَستدعي التابع المعرَّف برمزٍ (symbol) ويُنفَّذه تلقائيًا ويمرِّر إليه أي معاملاتٍ معطاة.

singleton_class

يُعيد صنف الكائن المُنفرد (singleton class) للكائن الذي استدعي معه.

singleton_method

يبحث في التوابع المنفردة فقط بطريقة مشابهة للتابع method.

singleton_methods

يُعيد مصفوفةً تحوي أسماء توابع الكائن المنفردة (singleton methods).

taint

يصم الكائن الذي استدعي معه بأنه كائنٌ فاسد (tainted).

?tainted

يتحقَّق إذا كان التابع فاسدًا (tainted).

tap

يُدخل الكائن المعطى إلى الكتلة (block)، ثم يعيده.

to_enum

يُنشئ نسخةً من الصنف Enumerator التي ستُجري عملية عدٍّ (enumerate) عبر استدعاء تابعٍ محدَّدٍ مع الكائن المعطى، وتمرير وسائط إن أعطيت.

to_s

يُعيد سلسلةً نصيةً تُمثِّل الكائن الذي استدعي معه.

trust

يعدُّ تابعًا مهملًا (Deprecated method) وهو مكافئٌ تمامًا للتابع untaint.

untaint

يُلغي علامة الحالة الفاسدة (tainted) من الكائن الذي استدعي معه.

untrust

يعدُّ تابعًا مهملًا (Deprecated method) وهو مكافئٌ تمامًا للتابع taint.

?untrusted

يعتبر تابعًا غير منصوحٍ به (Deprecated method) وهو مكافئٌ للتابع ?tainted.

yield_self

يُدخل الكائن المعطى إلى الكتلة (block) ويُعيد ناتج تنفيذ هذه الكتلة.

مصادر