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

من موسوعة حسوب
أنشأ الصفحة ب' ==توابع الصنف العامة (Public Class Methods)== === التابع constants=== في الشكل الأول، يعيد مصفوف...'
 
لا ملخص تعديل
سطر 1: سطر 1:
الوحدات (كائنات <code>Module)</code> هي مجموعة من التوابع والثوابت. التوابع الموجودة في الوحدات قد تكون إما توابع نسخة (instance methods)، أو توابع وحدة (module methods). توابع النسخة تظهر كتوابع في صنف عند تضمين الوحدة، وذلك على خلاف توابع الوحدة. وبالعكس ، يمكن استدعاء توابع الوحدة دون إنشاء كائن يُغلفها، بينما قد لا يمكن ذلك مع توابع النسخ. انظر صفحة <code>[[Ruby/Module/module function|module_function]]</code>.
في الأمثلة الموجودة في صفحات التوابع، الوسيط ''<code>sym</code>''  يشير إلى رمز، والذي قد يكون إما سلسلة نصية، أو كائنا من النوع <code>Symbol</code> (مثل <code>‎:name</code>).<syntaxhighlight lang="ruby">
module Mod
  include Math
  CONST = 1
  def meth
    #  ...
  end
end
Mod.class              #=> Module
Mod.constants          #=> [:CONST, :PI, :E]
Mod.instance_methods  #=> [:meth]
</syntaxhighlight>


==توابع الصنف العامة (Public Class Methods)==
==توابع الصنف العامة (Public Class Methods)==
===[[Ruby/Module/constants | التابع constants]]===
===[[Ruby/Module/constants | التابع constants]]===
في الشكل الأول، يعيد  مصفوفة مكونة أسماء كل الثوابت التي يمكن الوصول إليها لحظة الاستدعاء. تتضمن تلك المصفوفة أسماء جميع الوحدات (modules) والأصناف المعرفة في النطاق الكلي.
يعيد  مصفوفة مكونة أسماء كل الثوابت التي يمكن الوصول إليها لحظة الاستدعاء.  
===[[Ruby/Module/constants | التابع constants]]===
في الشكل الأول، يعيد  مصفوفة مكونة أسماء كل الثوابت التي يمكن الوصول إليها لحظة الاستدعاء. تتضمن تلك المصفوفة أسماء جميع الوحدات (modules) والأصناف المعرفة في النطاق الكلي.
===[[Ruby/Module/nesting | التابع nesting]]===
===[[Ruby/Module/nesting | التابع nesting]]===
يعيد  قائمة من الوحدات (<code>Modules</code>) المتشعبة لحظة الاستدعاء.
يعيد  قائمة من الوحدات (<code>Modules</code>) المتشعبة لحظة الاستدعاء.
===[[Ruby/Module/new | التابع new]]===
===[[Ruby/Module/new | التابع new]]===
ينشئ  وحدة مجهولة (anonymous module) جديدة. في حال إعطاء كتلة، فسيٌمرر إليها الوحدة (module)، وستُقيم الكتلة في سياق هذه الوحدة مثل <code>module_eval</code>.
ينشئ  وحدة مجهولة (anonymous module) جديدة.
===[[Ruby/Module/used_modules | التابع used_modules]]===
===[[Ruby/Module/used_modules | التابع used_modules]]===
يعيد  مصفوفة تحتوي جميع الوحدات (constant) المستخدمة في النطاق الحالي. ترتيب الوحدات في المصفوفة الناتجة غير محدد. .
يعيد  مصفوفة تحتوي جميع الوحدات (constant) المستخدمة في النطاق الحالي.
===[[Ruby/Module/3C | التابع <]]===
 
يعد  القيمة true إن كان الوسيط mod  صنفًا فرعيا من other. أو يعيد<code>nil</code> إن لم تكن بينهما أي علاقة. (فكر في العلاقة من حيث تعريف الصنف: "الفئة A <B" يستلزم "A <B".)
== توابع النسخة العامة (Public Instance Methods) ==
===[[Ruby/Module/3C-3D | التابع <=]]===
 
يعيد  القيمة true إن كان الوسيط mod  صنفًا فرعيًا من other أو كان يساويه. أو يعد <code>nil</code> إذا لم تكن بينهما أي علاقة. (فكر في هذه العلاقة من منظور تعريف الصنف: "الصنف A <B" يستلزم "A <B".)
===[[Ruby/Module/3C | التابع <]]===
يعد  القيمة <code>true</code> إن كان الوسيط <code>mod</code> صنفًا فرعيا من <code>other</code>. أو يعيد<code>nil</code> إن لم تكن بينهما أي علاقة.  
===[[Ruby/Module/3C-3D | التابع <=]]===
يعيد  القيمة <code>true</code> إن كان الوسيط <code>mod</code> صنفًا فرعيًا من <code>other</code> أو كان يساويه. أو يعد <code>nil</code> إذا لم تكن بينهما أي علاقة.  
===[[Ruby/Module/3C-3D-3E | التابع <=>]]===
===[[Ruby/Module/3C-3D-3E | التابع <=>]]===
يجري  عملية المقارنة - حيث يعيد إحدى القيم -1 أو 0 أو +1 أو nil اعتمادًا على ما إذا كان <code>module</code> يتضمن <code>other_module</code>، أو يتساويان، أو إذا كان <code>module</code> متضمَّنًا في <code>other_module</code>X.
يجري  عملية المقارنة.
===[[Ruby/Module/3D-3D | التابع ==]]===
===[[Ruby/Module/3D-3D | التابع ==]]===
معامل التساوي - في المستوى <code>Object</code> ، يعي المعامل <code>==</code> القيمة <code>true</code> فقط إن كان <code>obj</code> و <code>other</code> نفس الكائن. بشكل عام، يٌعاد تعريف هذا التابع في الأصناف المنحدرة (descendant classes) لتخصيصه للصنف.
معامل التساوي.
===[[Ruby/Module/3D-3D-3D | التابع ===]]===
===[[Ruby/Module/3D-3D-3D | التابع ===]]===
يعيد  القيمة <code>true</code> إن كان الوسيط obj نسخة (instance ) من الوسيط mod أو من أحد الأصناف المنحدرة منه. استخدامه مع الوحدات (modules) محدود، ولكن يمكن استخدامه في عبارات <code>case</code> لتصنيف الكائنات بحسب الصنف.
يعيد  القيمة <code>true</code> إن كان الوسيط <code>obj</code> نسخة (instance ) من الوسيط <code>mod</code> أو من أحد الأصناف المنحدرة منه.
===[[Ruby/Module/3E | التابع >]]===
===[[Ruby/Module/3E | التابع >]]===
يعيد  القيمة true إن كان الوسيط mod سلفًا (ancestor) للوسيط other. أو يعيد القيمة <code>nil</code> إن لم تكن بينهما أي علاقة. (فكر في العلاقة من منظور تعريف الأصناف: "الصنف A <B" يستلزم "B> A".)
يعيد  القيمة tr<code>u</code>e إن كان الوسيط <code>mod</code> سلفًا (ancestor) للوسيط <code>other</code>. أو يعيد القيمة <code>nil</code> إن لم تكن بينهما أي علاقة
===[[Ruby/Module/3E-3D | التابع >=]]===
 
يعيد  القيمة true إن كان الوسيط mod سلفًا (ancestor) للوسيط other، أو إن كانت الوحدتان متساويتين. يعيد القيمة <code>nil</code> إن لم تكن بينها أي علاقة. (فكر في العلاقة من منظور تعريف الأصناف: "الصنف A <B" يستلزم "B> A".)
=== [[Ruby/Module/3E-3D | التابع >=]] ===
يعيد  القيمة <code>true</code> إن كان الوسيط <code>mod</code> سلفًا (ancestor) للوسيط <code>other</code>، أو إن كانت الوحدتان متساويتين. يعيد القيمة <code>nil</code> إن لم تكن بينها أي علاقة.  
===[[Ruby/Module/alias_method | التابع alias_method]]===
===[[Ruby/Module/alias_method | التابع alias_method]]===
يجعل  الوسيط new_name نسخة جديدة من التابع old_name. يمكن استخدام هذا للاحتفاظ بإمكانية بالوصول إلى التوابع التي أُعيد تعريفها.
يجعل  الوسيط <code>new_name</code> نسخة جديدة من التابع <code>old_name</code>.  
===[[Ruby/Module/ancestors | التابع ancestors]]===
===[[Ruby/Module/ancestors | التابع ancestors]]===
يعيد  قائمة مكونة الوحدات المُتضمنة / المضافة إلى الوحدة  (بما في ذلك الوحدة نفسها).
يعيد  قائمة مكونة الوحدات المُتضمنة / المضافة إلى الوحدة  (بما في ذلك الوحدة نفسها).
===[[Ruby/Module/append_features | التابع append_features]]===
===[[Ruby/Module/append_features | التابع append_features]]===
عندما تكون هذه الوحدة مُضمّنة في وحدة أخرى، فستستدعي روبي <code>append_features</code> في هذه الوحدة، ويمرر إليه وحدة الاستقبال (receiving module) في الوسيط المعطى mod . الإعداد الافتراضي لروبي هو إضافة ثوابت، وتوابع، ومتغيرات هذه الوحدة إلى الوسيط mod إذا لم تكن هذه الوحدة مضافة سلفًا إلى mod أو أحد أسلافه (ancestors). انظر أيضا صفحة <code>Module#include</code>.
عندما تكون هذه الوحدة مُضمّنة في وحدة أخرى، فستستدعي روبي <code>append_features</code> في هذه الوحدة،  
===[[Ruby/Module/attr | التابع attr]]===
===[[Ruby/Module/attr | التابع attr]]===
الشكل الأول مكافئ لـ <code>attr_reader</code>. أما الشكل الثاني فيكافئ <code>attr_accessor(name)</code> ولكنه مُتجاوز الآن. الشكل الأخير يكافئ <code>attr_reader(name)</code> لكن متجاوز هو أيضًا.
الشكل الأول مكافئ لـ <code>attr_reader</code>. أما الشكل الثاني فيكافئ <code>attr_accessor(name).</code>
===[[Ruby/Module/attr_accessor | التابع attr_accessor]]===
===[[Ruby/Module/attr_accessor | التابع attr_accessor]]===
يحدد  خاصية مسماة (named attribute) لهذه الوحدة ، حيث يكون الاسم هو الرمز.<code>id2name</code> ، وينشئ متغير (<code>@name</code>) وتابع لقراءته. ينشئ أيضًا تابعا يُسمى <code>name=</code> لتعيين الخاصية. يتم تحويل الوسائط <code>String</code> إلى رموز.
يحدد  خاصية مسماة (named attribute) لهذه الوحدة.
===[[Ruby/Module/attr_reader | التابع attr_reader]]===
===[[Ruby/Module/attr_reader | التابع attr_reader]]===
ينشئ  متغيرات نسخ (instance variables) والتوابع المقابلة التي تعيد قيمة كل متغير نسخ. وهو مكافئ لاستدعاء "<code>attr</code>:name" على كل الاسم بالتتابع. تُحوّل الوسائط <code>String</code> إلى رموز.
ينشئ  متغيرات نسخ (instance variables) والتوابع المقابلة التي تعيد قيمة كل متغير نسخ.
===[[Ruby/Module/attr_writer | التابع attr_writer]]===
===[[Ruby/Module/attr_writer | التابع attr_writer]]===
ينشئ مدخلًا (accessor method) للسماح بتعيين قيم attribute<code>.id2name</code>. تُحول الوسائط <code>String</code> إلى رموز.
ينشئ التابع <code>attr_writer</code> مدخلًا (accessor method) للسماح بتعيين قيم الخاصية <code>''symbol''.id2name</code>.
===[[Ruby/Module/autoload | التابع autoload]]===
===[[Ruby/Module/autoload | التابع autoload]]===
يُُسجل  اسم الملف المراد تحميله (باستخدام <code>Kernel::require</code>) في أول مرة يتم فيها الدخول إلى الوحدة و(التي قد تكون سلسلة نصية أو رمزًا) في مجال أسماء الوحدة .
يُُسجل  اسم الملف المراد تحميله (باستخدام <code>Kernel::require</code>) في أول مرة يتم فيها الدخول إلى الوحدة.
===[[Ruby/Module/autoload-3F | التابع autoload?]]===
===[[Ruby/Module/autoload-3F | التابع autoload?]]===
يعيد  اسم الملف الذي سيُحمل إن كان الوسيط المعطى  مسجلًا كـ <code>autoload</code> في مجال أسماء الوحدة .
يعيد  اسم الملف الذي سيُحمل إن كان الوسيط المعطى  مسجلًا كـ <code>autoload</code> في مجال أسماء الوحدة.
===[[Ruby/Module/class_eval | التابع class_eval]]===
===[[Ruby/Module/class_eval | التابع class_eval]]===
يُقبّم  السلسلة النصية أو الكتلة المعطاة في سياق الوحدة ، إلا أنه عند إعطاء كتلة، لن يتأثر البحث عن متغيراالأصناف والثوابت. يمكن استخدام هذا لإضافة توابع إلى صنف. يعيد <code>module_eval</code> نتيجة تقييم الوسيط الممرر إليه. يحدد الوسيطان الاختياريات filename و lineno نص رسائل الخطأ.
يُقبّم  السلسلة النصية أو الكتلة المعطاة في سياق الوحدة.
===[[Ruby/Module/class_exec | التابع class_exec]]===
===[[Ruby/Module/class_exec | التابع class_exec]]===
يقيم  الكتلة المعطاة في سياق الصنف/الوحدة. التابع المعرف في الكتلة ستنتمي إلى المستقبِل (receiver). ستُمرر كل الوسائط المعطاة إلى التابع إلى الكتلة. يمكن استخدام هذا إذا كانت الكتلة تحتاج إلى الوصول إلى متغيرات النسخ (instance variables).
يقيم  الكتلة المعطاة في سياق الصنف/الوحدة.  
===[[Ruby/Module/class_variable_defined-3F | التابع class_variable_defined?]]===
===[[Ruby/Module/class_variable_defined-3F | التابع class_variable_defined?]]===
يعيد  القيمة <code>true</code> إن كان متغير الصنف (class variable) المعطى  مٌعرّفا في obj. تُحوّل الوسائط <code>String</code> إلى رموز.
يعيد  القيمة <code>true</code> إن كان متغير الصنف (class variable) المعطى  مٌعرّفا في الوسيط <code>obj</code>.
===[[Ruby/Module/class_variable_get | التابع class_variable_get]]===
===[[Ruby/Module/class_variable_get | التابع class_variable_get]]===
يعيد  قيمة متغير الصنف المعطى (أو يطلق استثناء <code>NameError</code>). يجب تضمين الجزء <code>@@</code> من اسم المتغير بالنسبة متغيرات الصنف العادية. تُحوّل الوسائط <code>String</code> إلى رموز.
يعيد  قيمة متغير الصنف المعطى (أو يطلق استثناء <code>NameError</code>).
===[[Ruby/Module/class_variable_set | التابع class_variable_set]]===
===[[Ruby/Module/class_variable_set | التابع class_variable_set]]===
يضبط  قيمة متغير الصنف المحدد بالوسيط symbol  ويحيل إليه الكائن المعطى obj. إذا تم تمرير اسم متغير الصنف كسلسلة نصية، قستُحوّل تلك السلسلة إلى رمز.
يضبط  قيمة متغير الصنف المحدد بالوسيط <code>symbol</code> ويحيل إليه الكائن المعطى <code>obj</code>.  
===[[Ruby/Module/class_variables | التابع class_variables]]===
===[[Ruby/Module/class_variables | التابع class_variables]]===
يعيد  مصفوفة مكونة من أسماء متغيرات الصنف في الوحدة . يشمل ذلك أسماء متغيرات الصنف في كل الوحدات المُضمّنة، ما لم يتم تعيين الوسيط inherit عند القيمة <code>false</code>.
يعيد  مصفوفة مكونة من أسماء متغيرات الصنف في الوحدة.
===[[Ruby/Module/const_defined-3F | التابع const_defined?]]===
===[[Ruby/Module/const_defined-3F | التابع const_defined?]]===
يتحقق مما إذا كانت للوحدة  أو أحد أسلافها (ancestors) ثابت بالاسم المعطى:
يتحقق التابع <code>const_defined?‎</code> مما إذا كانت الوحدة التي استُدعي معها أو أحد أسلافها (ancestors) تحتوي الثابت المعطى.
===[[Ruby/Module/const_get | التابع const_get]]===
===[[Ruby/Module/const_get | التابع const_get]]===
يتحقق  من وجود ثابت بالاسم المحدد في الوحدة . في حال تعيين <code>inherit</code>، فسيشمل البحث الأسلاف أيضًا (وكذلك <code>Object</code> إن كانت الوحدة من النوع <code>Module</code>).
يتحقق  من وجود ثابت بالاسم المحدد في الوحدة.
===[[Ruby/Module/const_missing | التابع const_missing]]===
===[[Ruby/Module/const_missing | التابع const_missing]]===
يُستدعى  عند محاولة استخدام ثابت غير معرف في الوحدة. يُمرّر إليه رمز sym  يمثل الثابتة غير المعرفة، ويعيد قيمة ليتم استخدامها بدل ذلك الثابت. الشيفرة التالية مثال على ذلك:
يُستدعى  عند محاولة استخدام ثابت غير معرف في الوحدة.  
===[[Ruby/Module/const_set | التابع const_set]]===
===[[Ruby/Module/const_set | التابع const_set]]===
يضبط  قيمة الثابت المعطى عند الكائن المحدد ، ثم يعيد ذلك الكائن. في حال لم يكن هناك ثابت يحمل الاسم المعطى، فسينشئ ثابتة جديدة.
يضبط  قيمة الثابت المعطى عند الكائن المحدد.
===[[Ruby/Module/constants | التابع constants]]===
===[[Ruby/Module/constants | التابع constants]]===
في الشلك الأول، يعيد  مصفوفة من أسماء كل الثوابت التي يمكن الوصول إليها لحظة الاستدعاء. هناك تابع يحمل نفس الأسم، اضفه إلى الموسوعة الآن؟؟؟ تتضمن هذه القائمة أسماء جميع الوحدات والأصناف المحددة في النطاق الكلي (global scope).
يعيد  مصفوفة من أسماء كل الثوابت التي يمكن الوصول إليها لحظة الاستدعاء.
===[[Ruby/Module/define_method | التابع define_method]]===
===[[Ruby/Module/define_method | التابع define_method]]===
يعرف  تابع نُسخ (instance method) في المُستقبِل (receiver). الوسيط المعطى parameter  يمكن أن يكون من النوع <code>Proc</code> أو <code>Method</code> أو <code>UnboundMethod</code>. في حال تمرير كتلة، فستُستخدم كمتن (body) للتابع. تُقيّم هذه الكتلة باستخدام <code>instance_eval</code>، وهو أمر قد يكون مُشكلًا على البعض، لأن <code>define_method</code> خاصة. (لهذا سنحتال ونستخدم <code>send</code> في هذا المثال.)
يعرف  تابع النُسخ (instance method) في المُستقبِل (receiver).
===[[Ruby/Module/deprecate_constant | التابع deprecate_constant]]===
===[[Ruby/Module/deprecate_constant | التابع deprecate_constant]]===
يضع  قائمة بالثوابت الموجودة المُتجاوزة.
يضع  قائمة بالثوابت الموجودة المُتجاوزة.
===[[Ruby/Module/extend_object | التابع extend_object]]===
===[[Ruby/Module/extend_object | التابع extend_object]]===
يوسع  الكائن المعطى بإضافة ثوابت و توابع هذه الوحدة (التي تُضاف كتوابع فردية [singleton methods]). هذا هو التابع المستخدم من قبل <code>Object#extend</code>.
يوسع  الكائن المعطى بإضافة ثوابت و توابع هذه الوحدة.
===[[Ruby/Module/extended | التابع extended]]===
===[[Ruby/Module/extended | التابع extended]]===
يكافئ <code>included</code>، إلا أنه يُستخدم مع الوحدات الموسعة (extended modules).
يكافئ <code>included</code>، إلا أنه يُستخدم مع الوحدات الموسعة (extended modules).
سطر 80: سطر 97:
يعيد  القيمة <code>true</code> إن كانت الوحدة المعطاة module  مُضمّنة في الوحدة  أو أحد أسلافها (ancestors).
يعيد  القيمة <code>true</code> إن كانت الوحدة المعطاة module  مُضمّنة في الوحدة  أو أحد أسلافها (ancestors).
===[[Ruby/Module/included | التابع included]]===
===[[Ruby/Module/included | التابع included]]===
يُستدعى  في كل مرة يتم تضمين المتلقي (receiver) في وحدة أو صنف آخر. يُقضل استخدام هذا على <code>Module.append_features</code> إن كن تريد تنفيذ بعض الإجراءات عند تضمين وحدة في أخرى.
يُستدعى  في كل مرة يتم تضمين المتلقي (receiver) في وحدة أو صنف آخر.
===[[Ruby/Module/included_modules | التابع included_modules]]===
===[[Ruby/Module/included_modules | التابع included_modules]]===
يعيد  قائمة بالوحدات المضمنة في الوحدة .
يعيد  قائمة بالوحدات المضمنة في الوحدة.
===[[Ruby/Module/inspect | التابع inspect]]===
===[[Ruby/Module/inspect | التابع inspect]]===
<code>inspect</code> هو اسم آخر للتابع <code>[[Ruby/Module/to s|to_s]]</code>.


===[[Ruby/Module/instance_method | التابع instance_method]]===
===[[Ruby/Module/instance_method | التابع instance_method]]===
يعيد كائن <code>UnboundMethod</code> يمثل تابع النسخة (instance method) المعطى في الوحدة .
يعيد التابع <code>instance_method</code> كائن <code>UnboundMethod</code> يمثل تابع النسخة (instance method) المعطى في الوحدة التي استُدعي معها.
===[[Ruby/Module/instance_methods | التابع instance_methods]]===
===[[Ruby/Module/instance_methods | التابع instance_methods]]===
يعيد  مصفوفة تحتوي على أسماء توابع النسخ (instance methods) العامة والمحمية (protected) في المستقبِل (receiver). بالنسبة للوحدات، فهي التوابع العامة والمحمية. أما بالنسبة للأصناف، فهي توابع النسخ (وليس التوابع المفردة [singleton methods]). إذا كان الوسيط الاختياري المعطى يساوي <code>false</code>، فلن يتم تضمين توابع الأسلاف (ancestors).
يعيد  مصفوفة تحتوي على أسماء توابع النسخ (instance methods) العامة والمحمية (protected) في المستقبِل (receiver).  
=== [[Ruby/Module/constants-i|التابع constants]]===
يعيد التابع <code>constants</code> مصفوفة من أسماء كل الثوابت التي يمكن الوصول إليها من الوحدة.
===[[Ruby/Module/method_added | التابع method_added]]===
===[[Ruby/Module/method_added | التابع method_added]]===
يُستدعى  في كل مرة يُضاف تابع نسخة (instance method) إلى المُستقبِل (receiver).
يُستدعى  في كل مرة يُضاف تابع نسخة (instance method) إلى المُستقبِل (receiver).
===[[Ruby/Module/method_defined-3F | التابع method_defined?]]===
===[[Ruby/Module/method_defined-3F | التابع method_defined?]]===
يعيد  القيمة <code>true</code> إن كان التابع المعطى مُعرّفا في الوحدة أو الصنف (أو الوحدات المُتضمنة فيه، وإن كان صنفًا فأسلافه). تتم مطابقة التوابع العامة والمحمية. تٌحوّل الوسائط النصية إلى رموز.
يعيد  القيمة <code>true</code> إن كان التابع المعطى مُعرّفا في الوحدة أو الصنف (أو الوحدات المُتضمنة فيه، وإن كان صنفًا فأسلافه).  
===[[Ruby/Module/method_removed | التابع method_removed]]===
===[[Ruby/Module/method_removed | التابع method_removed]]===
يستدعى  كمكالمة في كل مرة يُزال تابع نسخة (instance method) من المُستقبِل (receiver).
يستدعى  في كل مرة يُزال تابع نسخة (instance method) من المُستقبِل (receiver).
===[[Ruby/Module/method_undefined | التابع method_undefined]]===
غير موثق
===[[Ruby/Module/module_eval | التابع module_eval]]===
===[[Ruby/Module/module_eval | التابع module_eval]]===
يُقيّم  السلسلة النصية أو الكتلة المعطاة في سياق الوحدة، إلا أنه عند إعطاء كتلة، لن يتأثر البحث عن الثوابت/ الأصناف. يمكن استخدام هذا لإضافة توابع لصنف ما. تعيد <code>module_eval</code> نتيجة تقييم وسائطها. يحدد الوسيطان الاختياريان filename و lineno نص رسائل الخطأ.
يُقيّم  السلسلة النصية أو الكتلة المعطاة في سياق الوحدة،  
===[[Ruby/Module/module_exec | التابع module_exec]]===
===[[Ruby/Module/module_exec | التابع module_exec]]===
يقيّم  الكتلة الممررة في سياق الصنف/الوحدة. التابع المعرف في الكتلة ستنتمي إلى المُُستقبِل (receiver). الوسائط المُمررة إلى التابع ستُمرّر كلها إلى الكتلة. يمكن استخدام هذا إذا كانت الكتلة تحتاج إلى الوصول إلى متغيرات النسخة (instance variables).
يقيّم  الكتلة الممررة في سياق الصنف/الوحدة.  
===[[Ruby/Module/module_function | التابع module_function]]===
===[[Ruby/Module/module_function | التابع module_function]]===
ينشئ  دوال وحدة (module functions) للتابع المعطى. يمكن استدعاء هذه الدوال مع الوحدة كمُستقبِلات، كما يمكن أن تصير متاحة كتوابع نسخة (instance methods) للأصناف التي تُمزج (mix) في الوحدة. دوال <code>Module</code> هي نسخ من الدالة الأصلية، وبالتالي يمكن تغييرها بشكل مستقل. توابع النسخة (instance-method) ستُجعل خاصة. إذا تم استدعاء  دون وسائط، ستصبح التوابع المعرفة لاحقاً دوال وحدة. تُحوّل الوسائط النصية إلى رموز.
ينشئ  دوال وحدة (module functions) للتابع المعطى.
===[[Ruby/Module/name | التابع name]]===
===[[Ruby/Module/name | التابع name]]===
يعيد  اسم الوحدة.  أو يعيد القيمة nil إن كانت الوحدات مجهولة (anonymous modules).
يعيد  اسم الوحدة.  أو يعيد القيمة <code>nil</code> إن كانت الوحدات مجهولة (anonymous modules).
===[[Ruby/Module/prepend | التابع prepend]]===
===[[Ruby/Module/prepend | التابع prepend]]===
يستدعي  التابع <code>Module.prepend_features</code> على كل الوسائط المعطاة بترتيب عكسي.
يستدعي  التابع <code>Module.prepend_features</code> على كل الوسائط المعطاة بترتيب عكسي.
===[[Ruby/Module/prepend_features | التابع prepend_features]]===
===[[Ruby/Module/prepend_features | التابع prepend_features]]===
عندما تُرفق هذه الوحدة مع أخرى، تستدعي روبي التابع <code>prepend_features</code> في هذه الوحدة، ويمررها إليها الوحدة المُستقبِلة (receiving module) في mod. الاعداد الافتراضي لروبي هو إحلال (overlay) ثوابت وتوابع ومتغيرات الوحدة الخاصة بهذه الوحدة في mod إن لم تكن هذه الوحدة مضافة سلفًا إلى mod أو أحد أسلافها (ancestors). انظر أيضا صفحة <code>Module#prepend</code>.
عندما تُرفق هذه الوحدة مع أخرى، تستدعي روبي التابع <code>prepend_features</code> في هذه الوحدة.
===[[Ruby/Module/prepended | التابع prepended]]===
===[[Ruby/Module/prepended | التابع prepended]]===
يكافئ <code>included</code> ، ولكنه للوحدات المُرفقة (prepended modules).
يكافئ <code>included</code> ، ولكنه للوحدات المُرفقة (prepended modules).
===[[Ruby/Module/private | التابع private]]===
===[[Ruby/Module/private | التابع private]]===
إذا استُدعي دون إعطائه وسائط، فسيُعيّن المنظورية (visibility) الافتراضية للتوابع المحددة لاحقًا عند القيمة private. أما في حال تمرير وسائط، قسيضبط منظورية التوابع عند القيمة private. تُحوّل الوسائط النصية <code>String</code> إلى رموز.
إذا استُدعي التابع <code>private</code> دون إعطائه وسائط، فسيُعيّن المنظورية (visibility) الافتراضية للتوابع المحددة لاحقًا عند القيمة <code>private</code>. أما في حال تمرير وسائط، فسيضبط منظورية التوابع عند القيمة <code>private</code>. تُحوّل الوسائط النصية <code>String</code> إلى رموز.
===[[Ruby/Module/private_class_method | التابع private_class_method]]===
===[[Ruby/Module/private_class_method | التابع private_class_method]]===
يجعل  توابع الصف الحالية خاصة (private). غالبًا ما يستخدم لإخفاء المُنشئ (constructor) الافتراضي <code>new</code>.
يجعل  توابع الصف الحالية خاصة (private).
===[[Ruby/Module/private_constant | التابع private_constant]]===
===[[Ruby/Module/private_constant | التابع private_constant]]===
يجعل  قائمة الثوابت الموجودة الخاصة.
يجعل  قائمة الثوابت الموجودة الخاصة.
===[[Ruby/Module/private_instance_methods | التابع private_instance_methods]]===
===[[Ruby/Module/private_instance_methods | التابع private_instance_methods]]===
يعيد  قائمة بتوابع النسخة (instance methods) الخاصة (private) المعرفة في mod. إن كانت قيمة الوسيط الاختياري تساوي <code>false</code>، فلن تُضمّن توابع الأسلاف (ancestors).
يعيد  قائمة بتوابع النسخة (instance methods) الخاصة (private) المعرفة في <code>mod</code>.  
===[[Ruby/Module/private_method_defined-3F | التابع private_method_defined?]]===
===[[Ruby/Module/private_method_defined-3F | التابع private_method_defined?]]===
يعيد  القيمة <code>true</code> إن كان التابع الخاص المعطى معرفًا من طرف _ mod_ (أو الوحدات المتضمنة فيه، وإن كان صنفًا، فأسلافه[ancestors]). تُحول الوسائط النصية <code>String</code> إلى رموز.
يعيد  القيمة <code>true</code> إن كان التابع الخاص المعطى معرفًا من طرف <code>_ mod_</code>.
===[[Ruby/Module/protected | التابع protected]]===
===[[Ruby/Module/protected | التابع protected]]===
في حال استدعاء  دون تمرير أي وسائط، قسيضبط المنظورية (visibility) الافتراضية للتوابع المعرفة لاحقًا عند القيمة protected. أما في حال تمرير وسائط، فسيضبط منظورية التوابع المعطاة عند القيمة protected. تُحول الوسائط النصية <code>String</code> إلى رموز.
يضبط المنظورية (visibility) الافتراضية للتوابع عند القيمة protected.
===[[Ruby/Module/protected_instance_methods | التابع protected_instance_methods]]===
===[[Ruby/Module/protected_instance_methods | التابع protected_instance_methods]]===
يعيد قائمة بتوابع النسخة (instance methods) المحمية المعرفة في mod. إذا كان الوسيط الاختياري يساوي <code>false</code> ، فلن تُتضمّن توابع الأسلاف (ancestors).
يعيد التابع <code>protected_instance_methods</code> قائمة بتوابع النسخة (instance methods) المحمية المعرفة في الوحدة. إذا كان الوسيط الاختياري يساوي <code>false</code> ، فلن تُتضمّن توابع الأسلاف (ancestors).
===[[Ruby/Module/protected_method_defined-3F | التابع protected_method_defined?]]===
===[[Ruby/Module/protected_method_defined-3F | التابع protected_method_defined?]]===
يعيد القيمة <code>true</code> إن كان التابع المحمي (protected) المعطى معرفًا بواسطة mod (أو الوحدات المُتضمنة فيه، أو أسلافه إن كان صنفًا). تُحول الوسائط النصية <code>String</code> إلى رموز.
يعيد التابع <code>protected_method_defined?‎</code> القيمة <code>true</code> إن كان التابع المحمي (protected) المعطى معرفًا في الوحدة (أو الوحدات المُتضمنة فيه، أو أسلافه إن كان صنفًا).
===[[Ruby/Module/public | التابع public]]===
===[[Ruby/Module/public | التابع public]]===
في حال استدعاء بدون وسائط، فسيضبط المنظورية (visibility) الافتراضية للتوابع المعرفة لاحقًا عند القيمة public. أما في حال تمرير وسائط، فسيضبط منضورية التوابع المعطاة عند القيمة public. تُحول الوسائط النصية <code>String</code> إلى رموز.
في حال استدعاء التابع <code>public</code> بدون وسائط، فسيضبط المنظورية (visibility) الافتراضية للتوابع المعرفة لاحقًا عند القيمة <code>public</code>. أما في حال تمرير وسائط، فسيضبط منضورية التوابع المعطاة عند القيمة <code>public</code>.
===[[Ruby/Module/public_class_method | التابع public_class_method]]===
===[[Ruby/Module/public_class_method | التابع public_class_method]]===
يصنع  قائمة بتوابع الصنف العامة (public) الحالية.
يصنع  قائمة بتوابع الصنف العامة (public) الحالية.
سطر 134: سطر 152:
يصنع  قائمة بالثوابت العامة (public) الموجودة.
يصنع  قائمة بالثوابت العامة (public) الموجودة.
===[[Ruby/Module/public_instance_method | التابع public_instance_method]]===
===[[Ruby/Module/public_instance_method | التابع public_instance_method]]===
على غرار example_method، يبحث عن التوابع العامة وحسب.
على غرار <code>''[[Ruby/Module/instance method|instance_method]]''</code>، يبحث التابع <code>public_instance_method</code> عن التوابع العامة (<code>public</code>) وحسب.
===[[Ruby/Module/public_instance_methods | التابع public_instance_methods]]===
===[[Ruby/Module/public_instance_methods | التابع public_instance_methods]]===
يعيد  قائمة بتوابع النسخة (instance methods) العامة (public) المعرفة في mod. إن كانت قيمة الوسيط الاختياري تساوي <code>false</code>، فلن يتم تضمين توابع الأسلاف (ancestors).
يعيد  قائمة بتوابع النسخة (instance methods) العامة (public) المعرفة في <code>mod</code>.  
===[[Ruby/Module/public_method_defined-3F | التابع public_method_defined?]]===
===[[Ruby/Module/public_method_defined-3F | التابع public_method_defined?]]===
يعيد  القيمة <code>true</code> إن كان التابع العام (public) المعطى معرفًا بواسطة mod (أو الوحدات المتضمنة فيه، أو أسلافه إن كان صنفا). تُحول الوسائط النصية <code>String</code> إلى رموز.
يعيد  القيمة <code>true</code> إن كان التابع العام (public) المعطى معرفًا بواسطة <code>mod</code>.
===[[Ruby/Module/refine | التابع refine]]===
===[[Ruby/Module/refine | التابع refine]]===
يُهذب (refine)  الوحدة المتلقية (receiver).
يُهذب (refine)  الوحدة المتلقية (receiver).
===[[Ruby/Module/remove_class_variable | التابع remove_class_variable]]===
===[[Ruby/Module/remove_class_variable | التابع remove_class_variable]]===
يزيل  تعريف الوسيط المعطى sym ، ثم يعيد قيمة ذلك الثابت.
يزيل  تعريف الوسيط المعطى <code>sym</code> ، ثم يعيد قيمة ذلك الثابت.
===[[Ruby/Module/remove_const | التابع remove_const]]===
===[[Ruby/Module/remove_const | التابع remove_const]]===
يزيل  تعريف الثابت المعطى، ويعيد القيمة السابقة لذلك الثابت.  إذا كان هذا الثابت يشير إلى وحدة، فلن يغير اسم الوحدة، وقد يكون ذلك مصدر ارتباك.
يزيل  تعريف الثابت المعطى، ويعيد القيمة السابقة لذلك الثابت.  
===[[Ruby/Module/remove_method | التابع remove_method]]===
===[[Ruby/Module/remove_method | التابع remove_method]]===
يزيل  التوابع المحددة بواسطة الوسيط symbol  من الصنف الحالي. على سبيل المثال، انظر <code>Module.undef_method</code>. تُحول الوسائط النصية <code>String</code> إلى رموز.
يزيل  التوابع المحددة بواسطة الوسيط <code>symbol</code> من الصنف الحالي.  
===[[Ruby/Module/singleton_class-3F | التابع singleton_class?]]===
===[[Ruby/Module/singleton_class-3F | التابع singleton_class?]]===
يعيد  القيمة <code>true</code> إن كان mod صنفا مفردًا (singleton class )، وإلا فسيعيد القيمة <code>false</code> .
يعيد  القيمة <code>true</code> إن كان <code>mod</code> صنفا مفردًا (singleton class )، وإلا فسيعيد القيمة <code>false</code> .
===[[Ruby/Module/to_s | التابع to_s]]===
===[[Ruby/Module/to_s | التابع to_s]]===
يعيد  سلسلة نصية تمثل هذه الوحدة أو الصنف. بالنسبة للأصناف والوحدات الأساسية، سيكون هو الاسم. بالنسبة للمفردات (singletons)، تعاد معلومات عن الأشياء المتعلقة أيضًا.
يعيد  سلسلة نصية تمثل هذه الوحدة أو الصنف.  
===[[Ruby/Module/undef_method | التابع undef_method]]===
===[[Ruby/Module/undef_method | التابع undef_method]]===
يمنع  الصنف الحالي من الاستجابة للاستدعاءات الموجهة إلى التابع المعطى. على النقيض من <code>remove_method</code>، والذي يحذف التابع من الصنف المعين؛ سيبحث روبي في الأصناف الأبوية (superclasses) وفي الوحدات المختلطة (mixed-in modules) عن مُستقبِل (receiver) محتمل. تُحول الوسائط النصية <code>String</code> إلى رموز.
يمنع  الصنف الحالي من الاستجابة للاستدعاءات الموجهة إلى التابع المعطى.  
===[[Ruby/Module/using | التابع using]]===
===[[Ruby/Module/using | التابع using]]===
يستورد  الأصناف المهذبة (class refinements) من الوحدة نحو التعريف الحالي للصنف أو الوحدة.
يستورد  الأصناف المهذبة (class refinements) من الوحدة نحو التعريف الحالي للصنف أو الوحدة.
==مصادر<span> </span>==
==مصادر<span> </span>==
*[http://ruby-doc.org/core-2.5.1/Marshal.html قسم  الصنف Module في توثيق روبي الرسمي.]
*[http://ruby-doc.org/core-2.5.1/Module.html قسم  الصنف Module في توثيق روبي الرسمي.]
<noinclude>{{DISPLAYTITLE: صفحة الصنف <code>Module</code> في روبي}}</noinclude>
<noinclude>{{DISPLAYTITLE: صفحة الصنف <code>Module</code> في روبي}}</noinclude>
[[تصنيف: Ruby]]
[[تصنيف: Ruby]]
[[تصنيف: Module]]
[[تصنيف: Module]]

مراجعة 10:58، 27 أكتوبر 2018

الوحدات (كائنات Module) هي مجموعة من التوابع والثوابت. التوابع الموجودة في الوحدات قد تكون إما توابع نسخة (instance methods)، أو توابع وحدة (module methods). توابع النسخة تظهر كتوابع في صنف عند تضمين الوحدة، وذلك على خلاف توابع الوحدة. وبالعكس ، يمكن استدعاء توابع الوحدة دون إنشاء كائن يُغلفها، بينما قد لا يمكن ذلك مع توابع النسخ. انظر صفحة module_function.

في الأمثلة الموجودة في صفحات التوابع، الوسيط sym  يشير إلى رمز، والذي قد يكون إما سلسلة نصية، أو كائنا من النوع Symbol (مثل ‎:name).

module Mod
  include Math
  CONST = 1
  def meth
    #  ...
  end
end
Mod.class              #=> Module
Mod.constants          #=> [:CONST, :PI, :E]
Mod.instance_methods   #=> [:meth]

توابع الصنف العامة (Public Class Methods)

التابع constants

يعيد مصفوفة مكونة أسماء كل الثوابت التي يمكن الوصول إليها لحظة الاستدعاء.

التابع nesting

يعيد قائمة من الوحدات (Modules) المتشعبة لحظة الاستدعاء.

التابع new

ينشئ وحدة مجهولة (anonymous module) جديدة.

التابع used_modules

يعيد مصفوفة تحتوي جميع الوحدات (constant) المستخدمة في النطاق الحالي.

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

التابع ‎<‎

يعد القيمة true إن كان الوسيط mod صنفًا فرعيا من other. أو يعيدnil إن لم تكن بينهما أي علاقة.

التابع ‎<=‎

يعيد القيمة true إن كان الوسيط mod صنفًا فرعيًا من other أو كان يساويه. أو يعد nil إذا لم تكن بينهما أي علاقة.

التابع <=>

يجري عملية المقارنة.

التابع ==

معامل التساوي.

التابع ===

يعيد القيمة true إن كان الوسيط obj نسخة (instance ) من الوسيط mod أو من أحد الأصناف المنحدرة منه.

التابع ‎>‎

يعيد القيمة true إن كان الوسيط mod سلفًا (ancestor) للوسيط other. أو يعيد القيمة nil إن لم تكن بينهما أي علاقة

التابع ‎>=‎

يعيد القيمة true إن كان الوسيط mod سلفًا (ancestor) للوسيط other، أو إن كانت الوحدتان متساويتين. يعيد القيمة nil إن لم تكن بينها أي علاقة.

التابع alias_method

يجعل الوسيط new_name نسخة جديدة من التابع old_name.

التابع ancestors

يعيد قائمة مكونة الوحدات المُتضمنة / المضافة إلى الوحدة (بما في ذلك الوحدة نفسها).

التابع append_features

عندما تكون هذه الوحدة مُضمّنة في وحدة أخرى، فستستدعي روبي append_features في هذه الوحدة،

التابع attr

الشكل الأول مكافئ لـ attr_reader. أما الشكل الثاني فيكافئ attr_accessor(name).

التابع attr_accessor

يحدد خاصية مسماة (named attribute) لهذه الوحدة.

التابع attr_reader

ينشئ متغيرات نسخ (instance variables) والتوابع المقابلة التي تعيد قيمة كل متغير نسخ.

التابع attr_writer

ينشئ التابع attr_writer مدخلًا (accessor method) للسماح بتعيين قيم الخاصية symbol.id2name.

التابع autoload

يُُسجل اسم الملف المراد تحميله (باستخدام Kernel::require) في أول مرة يتم فيها الدخول إلى الوحدة.

التابع autoload?‎

يعيد اسم الملف الذي سيُحمل إن كان الوسيط المعطى مسجلًا كـ autoload في مجال أسماء الوحدة.

التابع class_eval

يُقبّم السلسلة النصية أو الكتلة المعطاة في سياق الوحدة.

التابع class_exec

يقيم الكتلة المعطاة في سياق الصنف/الوحدة.

التابع class_variable_defined?

يعيد القيمة true إن كان متغير الصنف (class variable) المعطى مٌعرّفا في الوسيط obj.

التابع class_variable_get

يعيد قيمة متغير الصنف المعطى (أو يطلق استثناء NameError).

التابع class_variable_set

يضبط قيمة متغير الصنف المحدد بالوسيط symbol ويحيل إليه الكائن المعطى obj.

التابع class_variables

يعيد مصفوفة مكونة من أسماء متغيرات الصنف في الوحدة.

التابع const_defined?

يتحقق التابع const_defined?‎ مما إذا كانت الوحدة التي استُدعي معها أو أحد أسلافها (ancestors) تحتوي الثابت المعطى.

التابع const_get

يتحقق من وجود ثابت بالاسم المحدد في الوحدة.

التابع const_missing

يُستدعى عند محاولة استخدام ثابت غير معرف في الوحدة.

التابع const_set

يضبط قيمة الثابت المعطى عند الكائن المحدد.

التابع constants

يعيد مصفوفة من أسماء كل الثوابت التي يمكن الوصول إليها لحظة الاستدعاء.

التابع define_method

يعرف تابع النُسخ (instance method) في المُستقبِل (receiver).

التابع deprecate_constant

يضع قائمة بالثوابت الموجودة المُتجاوزة.

التابع extend_object

يوسع الكائن المعطى بإضافة ثوابت و توابع هذه الوحدة.

التابع extended

يكافئ included، إلا أنه يُستخدم مع الوحدات الموسعة (extended modules).

التابع freeze

يمنع إجراء المزيد من التعديلات على الوحدة.

التابع include

يستدعي التابع Module.append_features على كل الوسائط الممررة بترتيب عكسي.

التابع include?

يعيد القيمة true إن كانت الوحدة المعطاة module مُضمّنة في الوحدة أو أحد أسلافها (ancestors).

التابع included

يُستدعى في كل مرة يتم تضمين المتلقي (receiver) في وحدة أو صنف آخر.

التابع included_modules

يعيد قائمة بالوحدات المضمنة في الوحدة.

التابع inspect

inspect هو اسم آخر للتابع to_s.

التابع instance_method

يعيد التابع instance_method كائن UnboundMethod يمثل تابع النسخة (instance method) المعطى في الوحدة التي استُدعي معها.

التابع instance_methods

يعيد مصفوفة تحتوي على أسماء توابع النسخ (instance methods) العامة والمحمية (protected) في المستقبِل (receiver).

التابع constants

يعيد التابع constants مصفوفة من أسماء كل الثوابت التي يمكن الوصول إليها من الوحدة.

التابع method_added

يُستدعى في كل مرة يُضاف تابع نسخة (instance method) إلى المُستقبِل (receiver).

التابع method_defined?

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

التابع method_removed

يستدعى في كل مرة يُزال تابع نسخة (instance method) من المُستقبِل (receiver).

التابع module_eval

يُقيّم السلسلة النصية أو الكتلة المعطاة في سياق الوحدة،

التابع module_exec

يقيّم الكتلة الممررة في سياق الصنف/الوحدة.

التابع module_function

ينشئ دوال وحدة (module functions) للتابع المعطى.

التابع name

يعيد اسم الوحدة. أو يعيد القيمة nil إن كانت الوحدات مجهولة (anonymous modules).

التابع prepend

يستدعي التابع Module.prepend_features على كل الوسائط المعطاة بترتيب عكسي.

التابع prepend_features

عندما تُرفق هذه الوحدة مع أخرى، تستدعي روبي التابع prepend_features في هذه الوحدة.

التابع prepended

يكافئ included ، ولكنه للوحدات المُرفقة (prepended modules).

التابع private

إذا استُدعي التابع private دون إعطائه وسائط، فسيُعيّن المنظورية (visibility) الافتراضية للتوابع المحددة لاحقًا عند القيمة private. أما في حال تمرير وسائط، فسيضبط منظورية التوابع عند القيمة private. تُحوّل الوسائط النصية String إلى رموز.

التابع private_class_method

يجعل توابع الصف الحالية خاصة (private).

التابع private_constant

يجعل قائمة الثوابت الموجودة الخاصة.

التابع private_instance_methods

يعيد قائمة بتوابع النسخة (instance methods) الخاصة (private) المعرفة في mod.

التابع private_method_defined?‎

يعيد القيمة true إن كان التابع الخاص المعطى معرفًا من طرف _ mod_.

التابع protected

يضبط المنظورية (visibility) الافتراضية للتوابع عند القيمة protected.

التابع protected_instance_methods

يعيد التابع protected_instance_methods قائمة بتوابع النسخة (instance methods) المحمية المعرفة في الوحدة. إذا كان الوسيط الاختياري يساوي false ، فلن تُتضمّن توابع الأسلاف (ancestors).

التابع protected_method_defined?‎

يعيد التابع protected_method_defined?‎ القيمة true إن كان التابع المحمي (protected) المعطى معرفًا في الوحدة (أو الوحدات المُتضمنة فيه، أو أسلافه إن كان صنفًا).

التابع public

في حال استدعاء التابع public بدون وسائط، فسيضبط المنظورية (visibility) الافتراضية للتوابع المعرفة لاحقًا عند القيمة public. أما في حال تمرير وسائط، فسيضبط منضورية التوابع المعطاة عند القيمة public.

التابع public_class_method

يصنع قائمة بتوابع الصنف العامة (public) الحالية.

التابع public_constant

يصنع قائمة بالثوابت العامة (public) الموجودة.

التابع public_instance_method

على غرار instance_method، يبحث التابع public_instance_method عن التوابع العامة (public) وحسب.

التابع public_instance_methods

يعيد قائمة بتوابع النسخة (instance methods) العامة (public) المعرفة في mod.

التابع public_method_defined?‎

يعيد القيمة true إن كان التابع العام (public) المعطى معرفًا بواسطة mod.

التابع refine

يُهذب (refine) الوحدة المتلقية (receiver).

التابع remove_class_variable

يزيل تعريف الوسيط المعطى sym ، ثم يعيد قيمة ذلك الثابت.

التابع remove_const

يزيل تعريف الثابت المعطى، ويعيد القيمة السابقة لذلك الثابت.

التابع remove_method

يزيل التوابع المحددة بواسطة الوسيط symbol من الصنف الحالي.

التابع singleton_class?‎

يعيد القيمة true إن كان mod صنفا مفردًا (singleton class )، وإلا فسيعيد القيمة false .

التابع to_s

يعيد سلسلة نصية تمثل هذه الوحدة أو الصنف.

التابع undef_method

يمنع الصنف الحالي من الاستجابة للاستدعاءات الموجهة إلى التابع المعطى.

التابع using

يستورد الأصناف المهذبة (class refinements) من الوحدة نحو التعريف الحالي للصنف أو الوحدة.

مصادر