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

من موسوعة حسوب
لا ملخص تعديل
مراجعة وتدقيق.
 
(4 مراجعات متوسطة بواسطة نفس المستخدم غير معروضة)
سطر 1: سطر 1:
الوحدات (كائنات <code>Module)</code> هي مجموعة من التوابع والثوابت. التوابع الموجودة في الوحدات قد تكون إما توابع نسخة (instance methods)، أو توابع وحدة (module methods). توابع النسخة تظهر كتوابع في صنف عند تضمين الوحدة، وذلك على خلاف توابع الوحدة. وبالعكس ، يمكن استدعاء توابع الوحدة دون إنشاء كائن يُغلفها، بينما قد لا يمكن ذلك مع توابع النسخ. انظر صفحة <code>[[Ruby/Module/module function|module_function]]</code>.
<noinclude>{{DISPLAYTITLE:الصنف <code>Module</code> في روبي}}</noinclude>
الصنف <code>Module</code> هو مجموعة من التوابع والثوابت. التوابع الموجودة في الوحدات <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">
في الأمثلة الموجودة في صفحات التوابع، يشير المعامل <code>sym</code> إلى رمز، والذي قد يكون إما [[Ruby/String|سلسلة نصية]]، أو كائنًا من النوع <code>[[Ruby/Symbol|Symbol]]</code> (مثل <code>‎:name</code>).<syntaxhighlight lang="ruby">
module Mod
module Mod
   include Math
   include Math
سطر 14: سطر 15:


</syntaxhighlight>
</syntaxhighlight>
==توابع الصنف العامة (Public Class Methods)==
==توابع الصنف العامة (Public Class Methods)==
===[[Ruby/Module/constants | التابع constants]]===
===[[Ruby/Module/constants|<code>constants</code>]]===
يعيد مصفوفة مكونة أسماء كل الثوابت التي يمكن الوصول إليها لحظة الاستدعاء.  
يعيد مصفوفة من أسماء كل الثوابت التي يمكن الوصول إليها لحظة الاستدعاء. 
===[[Ruby/Module/nesting | التابع nesting]]===
===<code>[[Ruby/Module/constants-i|()constants]]</code>===
يعيد قائمة من الوحدات (<code>Modules</code>) المتشعبة لحظة الاستدعاء.
يعيد مصفوفة من أسماء كل الثوابت التي يمكن الوصول إليها من الوحدة.
===[[Ruby/Module/new | التابع new]]===
===[[Ruby/Module/nesting|<code>nesting</code>]]===
ينشئ وحدة مجهولة (anonymous module) جديدة.
يعيد قائمة من الوحدات المتشعبة (Modules nested) لحظة الاستدعاء.
===[[Ruby/Module/used_modules | التابع used_modules]]===
===[[Ruby/Module/new|<code>new</code>]]===
يعيد مصفوفة تحتوي جميع الوحدات (constant) المستخدمة في النطاق الحالي.
ينشئ وحدة مجهولة (anonymous module) جديدة.
 
===[[Ruby/Module/used modules|<code>used_modules</code>]]===
== توابع النسخة العامة (Public Instance Methods) ==
يعيد مصفوفة تحتوي جميع الوحدات (modules) المستخدمة في النطاق الحالي.
 
==توابع النسخة العامة (Public Instance Methods)==
===[[Ruby/Module/3C | التابع ‎<‎]]===
===[[Ruby/Module/3C|<code>‎<‎</code>]]===
يعد  القيمة <code>true</code> إن كان الوسيط <code>mod</code> صنفًا فرعيا من <code>other</code>. أو يعيد<code>nil</code> إن لم تكن بينهما أي علاقة.  
يعيد المعامل ‎<code><‎</code> القيمة <code>true</code> إن كانت الوحدة <code>Module</code> التي تقع على يساره صنفًا فرعيًّا من الوحدة التي تقع على يمينه، أو يعيد القيمة <code>nil</code> إن لم تكن بينهما أية علاقة.
===[[Ruby/Module/3C-3D | التابع ‎<=‎]]===
===[[Ruby/Module/3C-3D|<code>‎<=‎</code>]]===
يعيد القيمة <code>true</code> إن كان الوسيط <code>mod</code> صنفًا فرعيًا من <code>other</code> أو كان يساويه. أو يعد <code>nil</code> إذا لم تكن بينهما أي علاقة.  
يعيد المعامل ‎<code><=‎</code> القيمة <code>true</code> إن كانت الوحدة <code>Module</code> التي تقع على يساره صنفًا فرعيًّا من الوحدة التي تقع على يمينه أو كانت الوحدتان متساويتين تمامًا، أو يعيد القيمة <code>nil</code> إذا لم تكن بينهما أية علاقة.
===[[Ruby/Module/3C-3D-3E | التابع <=>]]===
===[[Ruby/Module/3C-3D-3E|<code><=></code>]]===
يجري عملية المقارنة.
يجري المعامل <code><=></code> عملية الموازنة بين كائنين ثم يعيد الناتج الذي يشير إلى العلاقة بينهما.
===[[Ruby/Module/3D-3D | التابع ==]]===
===[[Ruby/Module/3D-3D|<code>==</code>]]===
معامل التساوي.
يتحقق معامل التساوي <code>==</code> من تساوي كائنين.
===[[Ruby/Module/3D-3D-3D | التابع ===]]===
===[[Ruby/Module/3D-3D-3D|<code>===</code>]]===
يعيد القيمة <code>true</code> إن كان الوسيط <code>obj</code> نسخة (instance ) من الوسيط <code>mod</code> أو من أحد الأصناف المنحدرة منه.
يعيد المعامل <code>===</code> القيمة <code>true</code> إن كان الكائن الواقع على يمينه نسخةً (instance ) من الكائن<code>Module</code> الواقع على يمينه أو من أحد الأصناف المنحدرة منه.
===[[Ruby/Module/3E | التابع ‎>‎]]===
===[[Ruby/Module/3E|<code>‎>‎</code>]]===
يعيد القيمة tr<code>u</code>e إن كان الوسيط <code>mod</code> سلفًا (ancestor) للوسيط <code>other</code>. أو يعيد القيمة <code>nil</code> إن لم تكن بينهما أي علاقة
يعيد المعامل <code><</code> القيمة <code>true</code> الكائن <code>Module</code> الذي يقع على يساره سلفًا (ancestor) للكائن الذي يقع على يمينه، أو يعيد القيمة <code>nil</code> إن لم تكن بينهما أية علاقة.
===[[Ruby/Module/3E-3D|<code>‎>=‎</code>]]===
يعيد المعامل ‎<code>>=‎‎</code> القيمة <code>true</code> إن كانت الوحدة <code>Module</code> التي تقع على يساره سلفًا (ancestor) للوحدة التي تقع على يمينه أو إن كانت الوحدتان متساويتين، أو يعيد القيمة <code>nil</code> إن لم تكن بينها أي علاقة.
===[[Ruby/Module/alias method|<code>alias_method</code>]]===
ينشئ اسمًا جديدًا (بديلًا) لتابع محدَّد.
===[[Ruby/Module/ancestors|<code>ancestors</code>]]===
يعيد قائمة مكونة الوحدات المُتضمنة/المضافة إلى الوحدة التي استُدعيت معها (بما في ذلك الوحدة نفسها).
===[[Ruby/Module/attr|<code>attr</code>]]===
يكافئ التابع <code>[[Ruby/Module/attr accessor|attr_reader]]</code>.
===[[Ruby/Module/attr accessor|<code>attr_accessor</code>]]===
يحدد خاصية مسماة (named attribute) لهذه الوحدة.
===[[Ruby/Module/attr reader|<code>attr_reader</code>]]===
ينشئ متغيرات نسخ (instance variables) والتوابع المقابلة التي تعيد قيمة كل متغير نسخ.
===[[Ruby/Module/attr writer|<code>attr_writer</code>]]===
ينشئ تابع وصول (accessor method) للسماح بتعيين قيمة للخاصية<code>''symbol''.id2name</code>.
===[[Ruby/Module/autoload|<code>autoload</code>]]===
يُُسجل اسم الملف المراد تحميله (باستخدام <code>Kernel::require</code>) في أول مرة يتم فيها الدخول إلى الوحدة.
===[[Ruby/Module/autoload-3F|<code>autoload?‎</code>]]===
يعيد اسم الملف الذي سيُحمل إن كان المعامل المعطى مسجلًا عبر التابع<code>[[Ruby/Module/autoload|autoload]]</code> في مجال أسماء الوحدة التي استُدعي معها.
===[[Ruby/Module/class eval|<code>class_eval</code>]]===
يُقيِّم السلسلة النصية أو الكتلة المعطاة في سياق الوحدة.
===[[Ruby/Module/class exec|<code>class_exec</code>]]===
يقيِّم الكتلة المعطاة في سياق <nowiki/>[[Ruby/modules and classes|الصنف/الوحدة]] التي استُدعي معها.
===[[Ruby/Module/class variable defined-3F|<code>?class_variable_defined</code>]]===
يتحقق إن كان متغير الصنف (class variable) المعطى مٌعرّفا في الكائن الذي استُدعي معه.
===[[Ruby/Module/class variable get|<code>class_variable_get</code>]]===
يعيد قيمة متغير الصنف المعطى (أو يطلق الاستثناء<code>[[Ruby/NameError|NameError]]</code>).
===[[Ruby/Module/class variable set|<code>class_variable_set</code>]]===
يضبط قيمة متغير الصنف المحدد بالمعامل المُمرَّر ويحيل إليه قيمة محدَّدة.
===[[Ruby/Module/class variables|<code>class_variables</code>]]===
يعيد مصفوفة مكونة من أسماء متغيرات الصنف في الوحدة التي استُدعي معها.
===<code rel="mw:WikiLink" title="Ruby/Module/const defined-3F" href="Ruby/Module/const defined-3F">[[Ruby/Module/const defined-3F|?const_defined]]</code>===
يتحقق مما إذا كانت الوحدة التي استُدعي معها أو أحد أسلافها (ancestors) تحوي الثابت المعطى.
===[[Ruby/Module/const get|<code>const_get</code>]]===
يتحقق من وجود ثابت باسم محدد في الوحدة التي استُدعي معها. 
===[[Ruby/Module/const missing|<code>const_missing</code>]]===
يُستدعى عند محاولة استخدام ثابت غير معرف في الوحدة.
===<code rel="mw:WikiLink" title="Ruby/Module/const set" href="Ruby/Module/const set">[[Ruby/Module/const set|const_set]]</code>===
يضبط قيمة ثابت محدَّد إلى قيمة الكائن المعطى ثم يعيد ذلك الكائن.
===[[Ruby/Module/constants|<code>constants</code>]]===
يعيد مصفوفة من أسماء كل الثوابت التي يمكن الوصول إليها لحظة الاستدعاء. 
===[[Ruby/Module/define method|<code>define_method</code>]]===
يعرّف تابع نُسخة (instance method) في المُستقبِل (receiver). 
===[[Ruby/Module/deprecate constant|<code>deprecate_constant</code>]]===
ينشئ قائمة بالثوابت الموجودة المهملة.
===[[Ruby/Module/freeze|<code>freeze</code>]]===
يمنع إجراء المزيد من التعديلات على <nowiki/>[[Ruby/Module|الوحدة]].
===[[Ruby/Module/include|<code>include</code>]]===
يستدعي التابع <code>[[Ruby/Module/append features|append_features]]</code> على كل المعاملات المُمرَّرة بترتيب عكسي.
===[[Ruby/Module/include-3F|<code>?‎include</code>]]===
يتحقق إن كانت الوحدة المعطاة مُضمّنة في الوحدة التي استُدعي معها أو أحد أسلافها (ancestors).
===[[Ruby/Module/included modules|<code>included_modules</code>]]===
يعيد قائمة بالوحدات المضمنة في الوحدة التي استُدعي معها.
===[[Ruby/Module/inspect|<code>inspect</code>]]===
هو اسم بديل للتابع <code>[[Ruby/Module/to s|to_s]]</code>.
===[[Ruby/Module/instance method|<code>instance_method</code>]]===
يعيد كائنًا من النوع <code>[[Ruby/UnboundMethod|UnboundMethod]]</code> يمثل تابع النسخة (instance method) المعطى في الوحدة التي استُدعي معها.
===[[Ruby/Module/instance methods|<code>instance_methods</code>]]===
يعيد مصفوفةً تحتوي على أسماء توابع النسخ (instance methods) العامة والمحمية (protected) في المستقبِل. 
===[[Ruby/Module/constants-i|<code>constants</code>]]===
يعيد مصفوفة من أسماء كل الثوابت التي يمكن الوصول إليها من الوحدة.
===<code rel="mw:WikiLink" title="Ruby/Module/method defined-3F" href="Ruby/Module/method defined-3F">?[[Ruby/Module/method defined-3F|method_defined]]</code>===
يتحقق إن كان التابع المعطى مُعرّفًا في الوحدة أو الصنف (أو في الوحدات المُتضمنة فيه، وإن كان صنفًا في أسلافه).
===[[Ruby/Module/module eval|<code>module_eval</code>]]===
يُقيّم السلسلة النصية أو الكتلة المعطاة في سياق الوحدة.
===[[Ruby/Module/module exec|<code>module_exec</code>]]===
يقيّم الكتلة الممررة في سياق الصنف/الوحدة.
===[[Ruby/Module/name|<code>name</code>]]===
يعيد اسم الوحدة، أو يعيد القيمة <code>nil</code> إن كانت الوحدة مجهولة (anonymous modules).
===[[Ruby/Module/prepend|<code>prepend</code>]]===
يستدعي التابع <code>[[Ruby/Module/prepend features|prepend_features]]</code> على كل المعاملات المعطاة بترتيب عكسي.
===[[Ruby/Module/private class method|<code>private_class_method</code>]]===
يجعل توابع صنفٍ محدَّدٍ خاصة (private).
===[[Ruby/Module/private constant|<code>private_constant</code>]]===
ينشئ قائمة بالثوابت الخاصة الموجودة.
===[[Ruby/Module/private instance methods|<code>private_instance_methods</code>]]===
يعيد قائمة بتوابع النسخة الخاصة (private instance methods) المعرفة في الوحدة.
===[[Ruby/Module/private method defined-3F|<code>private_method_defined?‎</code>]]===
يتحقق إن كان التابع الخاص (private) المعطى معرَّفًا من قِبَل <code>_ mod_</code> (أو الوحدات المتضمنة فيه، وأسلافه [ancestors] إن كان صنفًا).
===[[Ruby/Module/protected instance methods|<code>protected_instance_methods</code>]]===
يعيد قائمة بتوابع النسخة (instance methods) المحمية المعرفة في الوحدة.
===[[Ruby/Module/protected method defined-3F|<code>protected_method_defined?‎</code>]]===
يتحقق إن كان التابع المحمي (protected) المعطى معرفًا في الوحدة (أو الوحدات المُتضمنة فيه، أو أسلافه إن كان صنفًا).
===[[Ruby/Module/public class method|<code>public_class_method</code>]]===
ينشئ قائمةً بتوابع الصنف العامة الحالية.
===[[Ruby/Module/public constant|<code>public_constant</code>]]===
ينشئ قائمةً بالثوابت العامة الموجودة.
===[[Ruby/Module/public instance method|<code>public_instance_method</code>]]===
يبحث عن التوابع العامة (public) وحسب على غرار التابع<code>[[Ruby/Module/instance method|instance_method]]</code>.
===[[Ruby/Module/public instance methods|<code>public_instance_methods</code>]]===
يعيد قائمة بتوابع النسخة العامة (public instance methods) المعرفة في الوحدة.
===[[Ruby/Module/public method defined-3F|<code>public_method_defined?‎</code>]]===
يتحقق إن كان التابع العام (public method) المعطى معرفًا في <nowiki/>[[Ruby/modules and classes|الوحدة/الصنف]] (أو الوحدات المتضمنة فيه، أو أسلافه إن كان صنفا).
===[[Ruby/Module/remove class variable|<code>remove_class_variable</code>]]===
يزيل تعريف متغير محدَّد من صنفٍ ثم يعيد قيمة ذلك الثابت.
===[[Ruby/Module/remove method|<code>remove_method</code>]]===
يزيل تابعًا ذا اسم محدَّد من الصنف الحالي.
===[[Ruby/Module/singleton class-3F|<code>singleton_class?‎</code>]]===
يتحقق إن كان الصنف الذي استُدعي معه صنفا مفردًا (singleton class).
===[[Ruby/Module/to s|<code>to_s</code>]]===
يعيد سلسلة نصية تمثل الوحدة أو الصنف الذي استدعي معه. 
===[[Ruby/Module/undef method|<code>undef_method</code>]]===
يمنع الصنف الحالي من الاستجابة للاستدعاءات الموجهة إلى التابع المعطى. 


=== [[Ruby/Module/3E-3D | التابع ‎>=‎]] ===
== توابع النسخة الخاصة (Private Instance Methods) ==
يعيد  القيمة <code>true</code> إن كان الوسيط <code>mod</code> سلفًا (ancestor) للوسيط <code>other</code>، أو إن كانت الوحدتان متساويتين. يعيد القيمة <code>nil</code> إن لم تكن بينها أي علاقة.
===[[Ruby/Module/alias_method | التابع alias_method]]===
يجعل  الوسيط <code>new_name</code> نسخة جديدة من التابع <code>old_name</code>.
===[[Ruby/Module/ancestors | التابع ancestors]]===
يعيد  قائمة مكونة الوحدات المُتضمنة / المضافة إلى الوحدة  (بما في ذلك الوحدة نفسها).
===[[Ruby/Module/append_features | التابع append_features]]===
عندما تكون هذه الوحدة مُضمّنة في وحدة أخرى، فستستدعي روبي <code>append_features</code> في هذه الوحدة،
===[[Ruby/Module/attr | التابع attr]]===
الشكل الأول مكافئ لـ <code>attr_reader</code>. أما الشكل الثاني فيكافئ <code>attr_accessor(name).</code>
===[[Ruby/Module/attr_accessor | التابع attr_accessor]]===
يحدد  خاصية مسماة (named attribute) لهذه الوحدة.
===[[Ruby/Module/attr_reader | التابع attr_reader]]===
ينشئ  متغيرات نسخ (instance variables) والتوابع المقابلة التي تعيد قيمة كل متغير نسخ.
===[[Ruby/Module/attr_writer | التابع attr_writer]]===
ينشئ التابع <code>attr_writer</code> مدخلًا (accessor method) للسماح بتعيين قيم الخاصية <code>''symbol''.id2name</code>.
===[[Ruby/Module/autoload | التابع autoload]]===
يُُسجل  اسم الملف المراد تحميله (باستخدام <code>Kernel::require</code>) في أول مرة يتم فيها الدخول إلى الوحدة.
===[[Ruby/Module/autoload-3F | التابع autoload?‎]]===
يعيد  اسم الملف الذي سيُحمل إن كان الوسيط المعطى  مسجلًا كـ <code>autoload</code> في مجال أسماء الوحدة.
===[[Ruby/Module/class_eval | التابع class_eval]]===
يُقبّم  السلسلة النصية أو الكتلة المعطاة في سياق الوحدة.
===[[Ruby/Module/class_exec | التابع class_exec]]===
يقيم  الكتلة المعطاة في سياق الصنف/الوحدة.
===[[Ruby/Module/class_variable_defined-3F | التابع class_variable_defined?]]===
يعيد  القيمة <code>true</code> إن كان متغير الصنف (class variable) المعطى  مٌعرّفا في الوسيط <code>obj</code>.
===[[Ruby/Module/class_variable_get | التابع class_variable_get]]===
يعيد  قيمة متغير الصنف المعطى (أو يطلق استثناء <code>NameError</code>).
===[[Ruby/Module/class_variable_set | التابع class_variable_set]]===
يضبط  قيمة متغير الصنف المحدد بالوسيط <code>symbol</code>  ويحيل إليه الكائن المعطى <code>obj</code>.
===[[Ruby/Module/class_variables | التابع class_variables]]===
يعيد  مصفوفة مكونة من أسماء متغيرات الصنف في الوحدة.
===[[Ruby/Module/const_defined-3F | التابع const_defined?]]===
يتحقق التابع <code>const_defined?‎</code> مما إذا كانت الوحدة التي استُدعي معها أو أحد أسلافها (ancestors) تحتوي الثابت المعطى.
===[[Ruby/Module/const_get | التابع const_get]]===
يتحقق  من وجود ثابت بالاسم المحدد في الوحدة.
===[[Ruby/Module/const_missing | التابع const_missing]]===
يُستدعى  عند محاولة استخدام ثابت غير معرف في الوحدة.
===[[Ruby/Module/const_set | التابع const_set]]===
يضبط  قيمة الثابت المعطى عند الكائن المحدد.
===[[Ruby/Module/constants | التابع constants]]===
يعيد  مصفوفة من أسماء كل الثوابت التي يمكن الوصول إليها لحظة الاستدعاء.
===[[Ruby/Module/define_method | التابع define_method]]===
يعرف  تابع النُسخ (instance method) في المُستقبِل (receiver).
===[[Ruby/Module/deprecate_constant | التابع deprecate_constant]]===
يضع  قائمة بالثوابت الموجودة المُتجاوزة.
===[[Ruby/Module/extend_object | التابع extend_object]]===
يوسع  الكائن المعطى بإضافة ثوابت و توابع هذه الوحدة.
===[[Ruby/Module/extended | التابع extended]]===
يكافئ <code>included</code>، إلا أنه يُستخدم مع الوحدات الموسعة (extended modules).
===[[Ruby/Module/freeze | التابع freeze]]===
يمنع  إجراء المزيد من التعديلات على الوحدة.
===[[Ruby/Module/include | التابع include]]===
يستدعي  التابع <code>Module.append_features</code> على كل الوسائط الممررة بترتيب عكسي.
===[[Ruby/Module/include-3F | التابع include?]]===
يعيد  القيمة <code>true</code> إن كانت الوحدة المعطاة module  مُضمّنة في الوحدة  أو أحد أسلافها (ancestors).
===[[Ruby/Module/included | التابع included]]===
يُستدعى  في كل مرة يتم تضمين المتلقي (receiver) في وحدة أو صنف آخر.
===[[Ruby/Module/included_modules | التابع included_modules]]===
يعيد  قائمة بالوحدات المضمنة في الوحدة.
===[[Ruby/Module/inspect | التابع inspect]]===
<code>inspect</code> هو اسم آخر للتابع <code>[[Ruby/Module/to s|to_s]]</code>.


===[[Ruby/Module/instance_method | التابع instance_method]]===
===[[Ruby/Module/append features|<code>append_features</code>]]===
يعيد التابع <code>instance_method</code> كائن <code>UnboundMethod</code> يمثل تابع النسخة (instance method) المعطى في الوحدة التي استُدعي معها.
عندما تكون هذه الوحدة مُضمّنة في وحدة أخرى، فستستدعي روبي التابع <code>append_features</code> في هذه الوحدة، وتمرر إليه الوحدة المستقبلة (receiving module) التي استُدعيت معه.
===[[Ruby/Module/instance_methods | التابع instance_methods]]===
===[[Ruby/Module/extend object|<code>extend_object</code>]]===
يعيد  مصفوفة تحتوي على أسماء توابع النسخ (instance methods) العامة والمحمية (protected) في المستقبِل (receiver).  
يوسع الكائن المعطى بإضافة ثوابت و توابع هذه الوحدة (والتي تُضاف كتوابع فردية [singleton methods]).
=== [[Ruby/Module/constants-i|التابع constants]]===
===[[Ruby/Module/extended|<code>extended</code>]]===
يعيد التابع <code>constants</code> مصفوفة من أسماء كل الثوابت التي يمكن الوصول إليها من الوحدة.
يكافئ التابع <code>[[Ruby/Module/included|included]]</code> إلا أنه يُستخدم مع الوحدات الموسعة (extended modules).
===[[Ruby/Module/method_added | التابع method_added]]===
===[[Ruby/Module/included|<code>included</code>]]===
يُستدعى  في كل مرة يُضاف تابع نسخة (instance method) إلى المُستقبِل (receiver).
يمثِّل رد نداء يُستدعَى في كل مرة يتم تضمين المستقبل (receiver) في وحدة أو صنف آخر.
===[[Ruby/Module/method_defined-3F | التابع method_defined?]]===
===[[Ruby/Module/method added|<code>method_added</code>]]===
يعيد  القيمة <code>true</code> إن كان التابع المعطى مُعرّفا في الوحدة أو الصنف (أو الوحدات المُتضمنة فيه، وإن كان صنفًا فأسلافه).  
يُستدعَى في كل مرة يُضاف تابع نسخة (instance method) إلى المُستقبِل (receiver).
===[[Ruby/Module/method_removed | التابع method_removed]]===
===[[Ruby/Module/method removed|<code>method_removed</code>]]===
يستدعى في كل مرة يُزال تابع نسخة (instance method) من المُستقبِل (receiver).
يستدعى في كل مرة يُزال تابع نسخة (instance method) من المُستقبِل (receiver).
===[[Ruby/Module/module_eval | التابع module_eval]]===
===<code>[[Ruby/Module/method undefined|method_undefined‎]]</code>===
يُقيّم  السلسلة النصية أو الكتلة المعطاة في سياق الوحدة،
غير موثَّق بعد.
===[[Ruby/Module/module_exec | التابع module_exec]]===
===[[Ruby/Module/module function|<code>module_function</code>]]===
يقيّم  الكتلة الممررة في سياق الصنف/الوحدة.  
ينشئ دوال وحدة (module functions) للتوابع المعطاة.
===[[Ruby/Module/module_function | التابع module_function]]===
===[[Ruby/Module/prepend features|<code>prepend_features</code>]]===
ينشئ دوال وحدة (module functions) للتابع المعطى.
يُستدعَى في الوحدة المعطاة عندما تُرفق هذه الوحدة في أخرى، وتُمرَّر إليها الوحدة المُستقبِلة (receiving module) في الوحدة التي مُمرِّرت إليه.
===[[Ruby/Module/name | التابع name]]===
===[[Ruby/Module/prepended|<code>prepended</code>]]===
يعيد  اسم الوحدة.  أو يعيد القيمة <code>nil</code> إن كانت الوحدات مجهولة (anonymous modules).
يكافئ التابع <code>[[Ruby/Module/included|included]]</code> باستثناء أنَّه مخصص للوحدات المُرفقة (prepended modules).
===[[Ruby/Module/prepend | التابع prepend]]===
===[[Ruby/Module/private|<code>private</code>]]===
يستدعي  التابع <code>Module.prepend_features</code> على كل الوسائط المعطاة بترتيب عكسي.
يعين [[Ruby/modules and classes#.D8.A7.D9.84.D9.85.D8.B1.D8.A6.D9.8A.D8.A9|المرئية]] (visibility) الافتراضية للتوابع المحددة لاحقًا إلى المرئية <code>private</code>الخاصة إن استدعي دون تمرير أي شيء إليه. أما في حال تمرير اسم تابع (أو عدة توابع إليه)، فسيضبط<nowiki/>[[Ruby/modules and classes#.D8.A7.D9.84.D9.85.D8.B1.D8.A6.D9.8A.D8.A9|مرئية]] هذه التوابع إلى المرئية <code>private</code> الخاصة.
===[[Ruby/Module/prepend_features | التابع prepend_features]]===
===[[Ruby/Module/protected|<code>protected</code>]]===
عندما تُرفق هذه الوحدة مع أخرى، تستدعي روبي التابع <code>prepend_features</code> في هذه الوحدة.
يعين [[Ruby/modules and classes#.D8.A7.D9.84.D9.85.D8.B1.D8.A6.D9.8A.D8.A9|المرئية]] (visibility) الافتراضية للتوابع المعرفة لاحقًا إلى المرئية<code>protected</code> المحمية إن لم يمُرَّر إليه أي شيء. أما في حال تمرير اسم تابع (أو عدة توابع إليه)، فسيضبط <nowiki/>[[Ruby/modules and classes#.D8.A7.D9.84.D9.85.D8.B1.D8.A6.D9.8A.D8.A9|مرئية]] هذه التوابع المرئية <code>protected</code> المحمية. 
===[[Ruby/Module/prepended | التابع prepended]]===
===[[Ruby/Module/public|<code>public</code>]]===
يكافئ <code>included</code> ، ولكنه للوحدات المُرفقة (prepended modules).
يعين [[Ruby/modules and classes#.D8.A7.D9.84.D9.85.D8.B1.D8.A6.D9.8A.D8.A9|المرئية]] (visibility) الافتراضية للتوابع المعرفة لاحقًا إلى <code>public</code> العامة إن لم يمُرَّر إليه أي شيء. أما في حال تمرير اسم تابع (أو عدة توابع إليه)، فسيضبط <nowiki/>[[Ruby/modules and classes#.D8.A7.D9.84.D9.85.D8.B1.D8.A6.D9.8A.D8.A9|مرئية]] هذه التوابع المرئية <code>public</code> العامة. 
===[[Ruby/Module/private | التابع private]]===
===[[Ruby/Module/refine|<code>refine</code>]]===
إذا استُدعي التابع <code>private</code> دون إعطائه وسائط، فسيُعيّن المنظورية (visibility) الافتراضية للتوابع المحددة لاحقًا عند القيمة <code>private</code>. أما في حال تمرير وسائط، فسيضبط منظورية التوابع عند القيمة <code>private</code>. تُحوّل الوسائط النصية <code>String</code> إلى رموز.
[[Ruby/refinements|يحسِّن]] (refine) الوحدة المستقبلة (receiver) ثم يعيد <nowiki/>[[Ruby/Module|الوحدة]] التي عُرِّفت فيها<nowiki/>[[Ruby/refinements|التوابع المحسَّنة]].
===[[Ruby/Module/private_class_method | التابع private_class_method]]===
===[[Ruby/Module/remove const|<code>remove_const</code>]]===
يجعل  توابع الصف الحالية خاصة (private).
يزيل تعريف ثابت محدَّد، ويعيد القيمة السابقة له.
===[[Ruby/Module/private_constant | التابع private_constant]]===
===[[Ruby/Module/using|<code>using</code>]]===
يجعل  قائمة الثوابت الموجودة الخاصة.
يستورد [[Ruby/refinements|الأصناف المحسَّنة]] (class refinements) من الوحدة المٌمررة إليه إلى التعريف الحالي للصنف أو الوحدة.
===[[Ruby/Module/private_instance_methods | التابع private_instance_methods]]===
يعيد  قائمة بتوابع النسخة (instance methods) الخاصة (private) المعرفة في <code>mod</code>.  
===[[Ruby/Module/private_method_defined-3F | التابع private_method_defined?‎]]===
يعيد  القيمة <code>true</code> إن كان التابع الخاص المعطى معرفًا من طرف <code>_ mod_</code>.
===[[Ruby/Module/protected | التابع protected]]===
يضبط المنظورية (visibility) الافتراضية للتوابع عند القيمة protected.
===[[Ruby/Module/protected_instance_methods | التابع protected_instance_methods]]===
يعيد التابع <code>protected_instance_methods</code> قائمة بتوابع النسخة (instance methods) المحمية المعرفة في الوحدة. إذا كان الوسيط الاختياري يساوي <code>false</code> ، فلن تُتضمّن توابع الأسلاف (ancestors).
===[[Ruby/Module/protected_method_defined-3F | التابع protected_method_defined?‎]]===
يعيد التابع <code>protected_method_defined?‎</code> القيمة <code>true</code> إن كان التابع المحمي (protected) المعطى معرفًا في الوحدة (أو الوحدات المُتضمنة فيه، أو أسلافه إن كان صنفًا).
===[[Ruby/Module/public | التابع public]]===
في حال استدعاء التابع <code>public</code> بدون وسائط، فسيضبط المنظورية (visibility) الافتراضية للتوابع المعرفة لاحقًا عند القيمة <code>public</code>. أما في حال تمرير وسائط، فسيضبط منضورية التوابع المعطاة عند القيمة <code>public</code>.
===[[Ruby/Module/public_class_method | التابع public_class_method]]===
يصنع  قائمة بتوابع الصنف العامة (public) الحالية.
===[[Ruby/Module/public_constant | التابع public_constant]]===
يصنع  قائمة بالثوابت العامة (public) الموجودة.
===[[Ruby/Module/public_instance_method | التابع public_instance_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]]===
يعيد  قائمة بتوابع النسخة (instance methods) العامة (public) المعرفة في <code>mod</code>.
===[[Ruby/Module/public_method_defined-3F | التابع public_method_defined?‎]]===
يعيد  القيمة <code>true</code> إن كان التابع العام (public) المعطى معرفًا بواسطة <code>mod</code>.
===[[Ruby/Module/refine | التابع refine]]===
يُهذب (refine) الوحدة المتلقية (receiver).
===[[Ruby/Module/remove_class_variable | التابع remove_class_variable]]===
يزيل  تعريف الوسيط المعطى <code>sym</code> ، ثم يعيد قيمة ذلك الثابت.
===[[Ruby/Module/remove_const | التابع remove_const]]===
يزيل  تعريف الثابت المعطى، ويعيد القيمة السابقة لذلك الثابت.  
===[[Ruby/Module/remove_method | التابع remove_method]]===
يزيل  التوابع المحددة بواسطة الوسيط <code>symbol</code> من الصنف الحالي.
===[[Ruby/Module/singleton_class-3F | التابع singleton_class?‎]]===
يعيد  القيمة <code>true</code> إن كان <code>mod</code> صنفا مفردًا (singleton class )، وإلا فسيعيد القيمة <code>false</code> .
===[[Ruby/Module/to_s | التابع to_s]]===
يعيد  سلسلة نصية تمثل هذه الوحدة أو الصنف.
===[[Ruby/Module/undef_method | التابع undef_method]]===
يمنع  الصنف الحالي من الاستجابة للاستدعاءات الموجهة إلى التابع المعطى.
===[[Ruby/Module/using | التابع using]]===
يستورد  الأصناف المهذبة (class refinements) من الوحدة نحو التعريف الحالي للصنف أو الوحدة.
==مصادر<span> </span>==
==مصادر<span> </span>==
*[http://ruby-doc.org/core-2.5.1/Module.html قسم الصنف Module في توثيق روبي الرسمي.]
*[http://ruby-doc.org/core-2.5.1/Module.html قسم الصنف Module في توثيق روبي الرسمي.]
<noinclude>{{DISPLAYTITLE: صفحة الصنف <code>Module</code> في روبي}}</noinclude>
[[تصنيف: Ruby]]
[[تصنيف: Ruby]]
[[تصنيف: Module]]
[[تصنيف: Ruby Class]]
[[تصنيف: Ruby Module]]
[[تصنيف: Ruby Module Class]]

المراجعة الحالية بتاريخ 18:13، 19 نوفمبر 2018

الصنف Module هو مجموعة من التوابع والثوابت. التوابع الموجودة في الوحدات 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

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

()constants

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

nesting

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

new

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

used_modules

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

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

‎<‎

يعيد المعامل ‎<‎ القيمة true إن كانت الوحدة Module التي تقع على يساره صنفًا فرعيًّا من الوحدة التي تقع على يمينه، أو يعيد القيمة nil إن لم تكن بينهما أية علاقة.

‎<=‎

يعيد المعامل ‎<=‎ القيمة true إن كانت الوحدة Module التي تقع على يساره صنفًا فرعيًّا من الوحدة التي تقع على يمينه أو كانت الوحدتان متساويتين تمامًا، أو يعيد القيمة nil إذا لم تكن بينهما أية علاقة.

<=>

يجري المعامل <=> عملية الموازنة بين كائنين ثم يعيد الناتج الذي يشير إلى العلاقة بينهما.

==

يتحقق معامل التساوي == من تساوي كائنين.

===

يعيد المعامل === القيمة true إن كان الكائن الواقع على يمينه نسخةً (instance ) من الكائنModule الواقع على يمينه أو من أحد الأصناف المنحدرة منه.

‎>‎

يعيد المعامل < القيمة true الكائن Module الذي يقع على يساره سلفًا (ancestor) للكائن الذي يقع على يمينه، أو يعيد القيمة nil إن لم تكن بينهما أية علاقة.

‎>=‎

يعيد المعامل ‎>=‎‎ القيمة true إن كانت الوحدة Module التي تقع على يساره سلفًا (ancestor) للوحدة التي تقع على يمينه أو إن كانت الوحدتان متساويتين، أو يعيد القيمة nil إن لم تكن بينها أي علاقة.

alias_method

ينشئ اسمًا جديدًا (بديلًا) لتابع محدَّد.

ancestors

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

attr

يكافئ التابع attr_reader.

attr_accessor

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

attr_reader

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

attr_writer

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

autoload

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

autoload?‎

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

class_eval

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

class_exec

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

?class_variable_defined

يتحقق إن كان متغير الصنف (class variable) المعطى مٌعرّفا في الكائن الذي استُدعي معه.

class_variable_get

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

class_variable_set

يضبط قيمة متغير الصنف المحدد بالمعامل المُمرَّر ويحيل إليه قيمة محدَّدة.

class_variables

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

?const_defined

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

const_get

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

const_missing

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

const_set

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

constants

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

define_method

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

deprecate_constant

ينشئ قائمة بالثوابت الموجودة المهملة.

freeze

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

include

يستدعي التابع append_features على كل المعاملات المُمرَّرة بترتيب عكسي.

?‎include

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

included_modules

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

inspect

هو اسم بديل للتابع to_s.

instance_method

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

instance_methods

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

constants

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

?method_defined

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

module_eval

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

module_exec

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

name

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

prepend

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

private_class_method

يجعل توابع صنفٍ محدَّدٍ خاصة (private).

private_constant

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

private_instance_methods

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

private_method_defined?‎

يتحقق إن كان التابع الخاص (private) المعطى معرَّفًا من قِبَل _ mod_ (أو الوحدات المتضمنة فيه، وأسلافه [ancestors] إن كان صنفًا).

protected_instance_methods

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

protected_method_defined?‎

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

public_class_method

ينشئ قائمةً بتوابع الصنف العامة الحالية.

public_constant

ينشئ قائمةً بالثوابت العامة الموجودة.

public_instance_method

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

public_instance_methods

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

public_method_defined?‎

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

remove_class_variable

يزيل تعريف متغير محدَّد من صنفٍ ثم يعيد قيمة ذلك الثابت.

remove_method

يزيل تابعًا ذا اسم محدَّد من الصنف الحالي.

singleton_class?‎

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

to_s

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

undef_method

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

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

append_features

عندما تكون هذه الوحدة مُضمّنة في وحدة أخرى، فستستدعي روبي التابع append_features في هذه الوحدة، وتمرر إليه الوحدة المستقبلة (receiving module) التي استُدعيت معه.

extend_object

يوسع الكائن المعطى بإضافة ثوابت و توابع هذه الوحدة (والتي تُضاف كتوابع فردية [singleton methods]).

extended

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

included

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

method_added

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

method_removed

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

method_undefined‎

غير موثَّق بعد.

module_function

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

prepend_features

يُستدعَى في الوحدة المعطاة عندما تُرفق هذه الوحدة في أخرى، وتُمرَّر إليها الوحدة المُستقبِلة (receiving module) في الوحدة التي مُمرِّرت إليه.

prepended

يكافئ التابع included باستثناء أنَّه مخصص للوحدات المُرفقة (prepended modules).

private

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

protected

يعين المرئية (visibility) الافتراضية للتوابع المعرفة لاحقًا إلى المرئيةprotected المحمية إن لم يمُرَّر إليه أي شيء. أما في حال تمرير اسم تابع (أو عدة توابع إليه)، فسيضبط مرئية هذه التوابع المرئية protected المحمية. 

public

يعين المرئية (visibility) الافتراضية للتوابع المعرفة لاحقًا إلى public العامة إن لم يمُرَّر إليه أي شيء. أما في حال تمرير اسم تابع (أو عدة توابع إليه)، فسيضبط مرئية هذه التوابع المرئية public العامة. 

refine

يحسِّن (refine) الوحدة المستقبلة (receiver) ثم يعيد الوحدة التي عُرِّفت فيهاالتوابع المحسَّنة.

remove_const

يزيل تعريف ثابت محدَّد، ويعيد القيمة السابقة له.

using

يستورد الأصناف المحسَّنة (class refinements) من الوحدة المٌمررة إليه إلى التعريف الحالي للصنف أو الوحدة.

مصادر