الفرق بين المراجعتين ل"Ruby/Method"

من موسوعة حسوب
اذهب إلى التنقل اذهب إلى البحث
(أنشأ الصفحة ب'تحوّل المكتبة <code>Marshal</code> مجموعات من كائنات روبب إلى سلاسل بتات (byte stream)، مما يسمح بتخزينها خا...')
 
سطر 1: سطر 1:
تحوّل المكتبة <code>Marshal</code> مجموعات من كائنات روبب إلى سلاسل بتات (byte stream)، مما يسمح بتخزينها خارج البرنامج النصي النشط حاليًا. ثم يمكن بعد ذلك قراءة تلك البيانات وإعادة إنشاء الكائنات الأصلية.  
+
يتم إنشاء كائنات الصنف <code>Method</code> بواسطة التابع <code>[[Ruby/Objec/method|Object#method]]</code>، وترتبط بكائن معين (وليس بالصنف وحسب). ويمكن استخدامها لاستدعاء التابع داخل الكائن، أو ككتلة (block) مرتبطة بمكرر (iterator). كما يمكن فك ارتباطها (unbound) من كائن محدد (سيؤدي ذلك إلى إنشاء كائن <code>[[Ruby/UnboundMethod|UnboundMethod]]</code>)، ثم ربطها بآخر.  <syntaxhighlight lang="ruby">
 +
class Thing
 +
  def square(n)
 +
    n*n
 +
  end
 +
end
 +
thing = Thing.new
 +
meth  = thing.method(:square)
 +
 
 +
meth.call(9)                #=> 81
 +
[ 1, 2, 3 ].collect(&meth)  #=> [1, 4, 9]
 +
</syntaxhighlight> 
 +
 
 +
==توابع الصنف العامة (Public Class Methods)==
 +
===[[Ruby/Method/3D-3D | التابع ==]]===
 +
يكاون كائنان من النوع Method متساويين إن كانا مرتبطين بنفس الكائن، وكانا يشيران إلى نفس تعريف التابع، وكان لهما نفس الصنف أو الوحدة (module) المالكة.
 +
===[[Ruby/Method/3D-3D-3D | التابع ===]]===
 +
يستدعي  الكتلة مع تمرير المعامل <code>obj</code> كوسيط لـ proc مثل <code>Proc#call</code>.  يسمح لكائن proc أن يكون هدفًا للكتلة <code>when</code> في التعليمة case.
 +
===[[Ruby/Method/5B-5D | التابع []]]===
 +
يستدعي  الكتلة البرمجية للتابع، ويضبط قيم وسائط الكتلة عند القيم المعطاة params باستخدام صياغة مشابهة لاستدعاء التوابع. يعيد  قيمة آخر تعبير تم تقييمه في الكتلة.
 +
===[[Ruby/Method/arity | التابع arity]]===
 +
يعيد  مؤشرا لعدد الوسائط المقبولة من قبل التابع. يعيد عددًا صحيحًا غير سالب للتوابع التي تأخذ عددًا محددًا من الوسائطا. بالنسبة لتوابع روبي التي تأخذ عددًا متغيرًا من الوسائط، يًعاد العدد -n-1، حيث n هو عدد الوسائط المطلوبة. الوسائط المسماة (Keyword arguments) ستُعد وسيطاً إضافيًا واحدًا، وسيكون ذلك الوسيط إلزاميا إن كان أيٌّ من الوسائط المسماة كذلك. بالنسبة للتوابع المكتوبة بلغة C، سيُعاد العدد -1 إن كانت استدعاء تلك التوابع يأخذ عددًا متغيرًا من الوسائط.
 +
===[[Ruby/Method/call | التابع call]]===
 +
يستدعي  كتلة التابع، ويضبط وسائط الكتلة عند القيم المعطاة params باستخدام صياغة مشابهة لصياغة استدعاء التوابع. ثم يعد قيمة آخر تعبير تم تقييمه في الكتلة.
 +
===[[Ruby/Method/clone | التابع clone]]===
 +
يعيد  نسخة من هذا التابع.
 +
===[[Ruby/Method/curry | التابع curry]]===
 +
يعيد  كتلة proc مُجزّءة (curried proc) انطلاقا من التابع الذي استُدعيت معه. عندما يكون عدد الوسائط الممررة إلى الكتلة proc أقل من رتبة (arity) التابع، فستعاد كتلة proc مجزءة أخرى. لن يُستدعى التابع فعليًا إلا عندما يتم توفير الوسائط الكافية لإمضاء (signature) التابع.
 +
===[[Ruby/Method/eql-3F | التابع eql?]]===
 +
يكون كائنان من النوع Method متساويتين إذا كانا مرتبطين بنفس الكائن، ويرجعان إلى نفس التعريف، وكانا مملوكين من قبل نفس الصنف أو الوحدة.
 +
===[[Ruby/Method/hash | التابع hash]]===
 +
يعيد  رمز التكويد (hash) المقابل لكائن Method الذي استُدعي معه.
 +
===[[Ruby/Method/inspect | التابع inspect]]===
 +
يعيد  اسم التابع الأصلي (underlying method).
 +
===[[Ruby/Method/name | التابع name]]===
 +
يعيد  اسم التابع.
 +
===[[Ruby/Method/original_name | التابع original_name]]===
 +
يعيد  الاسم الأصلي للتابع الذي استُدعي معه.
 +
===[[Ruby/Method/owner | التابع owner]]===
 +
يعيد  الصنف أو الوحدة (module) التي تعرف التابع .
 +
===[[Ruby/Method/parameters | التابع parameters]]===
 +
يعيد  معلومات عن وسائط التابع .
 +
===[[Ruby/Method/receiver | التابع receiver]]===
 +
يعيد  المستقبل المتلقي (bound receiver) لكائن Method .
 +
===[[Ruby/Method/source_location | التابع source_location]]===
 +
يعيد  اسم الملف المصدر لروبي ورقم السطر الذي يحتوي هذا التابع، أو يعيد nil إن لم يُعرّف هذا التابع في روبي (أي أصلي).
 +
===[[Ruby/Method/super_method | التابع super_method]]===
 +
يعيد  كائنا من النوع <code>Method</code> للصنف الأب (superclass)، حتى يمكن استدعاؤه عند استخدام super، أو يعيد nil إن لم يكن هناك تابع في الصنف الأب.
 +
===[[Ruby/Method/to_proc | التابع to_proc]]===
 +
يعيد  الكائنً من النوع <code>Proc</code> المقابل لهذا التابع.
 +
===[[Ruby/Method/to_s | التابع to_s]]===
 +
يعيد  اسم التابع الأصلي (underlying method).
 +
===[[Ruby/Method/unbind | التابع unbind]]===
 +
يفك  ارتباط تابع meth من مُستقبِله (receiver) الحالي. يمكن في وقت لاحق ربط <code>UnboundMethod</code> مع كائن جديد من نفس الصنف (انظر <code>UnboundMethod</code>).
 +
 
  
 
==مصادر<span> </span>==
 
==مصادر<span> </span>==

مراجعة 21:26، 25 أكتوبر 2018

يتم إنشاء كائنات الصنف Method بواسطة التابع Object#method، وترتبط بكائن معين (وليس بالصنف وحسب). ويمكن استخدامها لاستدعاء التابع داخل الكائن، أو ككتلة (block) مرتبطة بمكرر (iterator). كما يمكن فك ارتباطها (unbound) من كائن محدد (سيؤدي ذلك إلى إنشاء كائن UnboundMethod)، ثم ربطها بآخر.

class Thing
  def square(n)
    n*n
  end
end
thing = Thing.new
meth  = thing.method(:square)

meth.call(9)                 #=> 81
[ 1, 2, 3 ].collect(&meth)   #=> [1, 4, 9]

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

التابع ==

يكاون كائنان من النوع Method متساويين إن كانا مرتبطين بنفس الكائن، وكانا يشيران إلى نفس تعريف التابع، وكان لهما نفس الصنف أو الوحدة (module) المالكة.

التابع ===

يستدعي الكتلة مع تمرير المعامل obj كوسيط لـ proc مثل Proc#call. يسمح لكائن proc أن يكون هدفًا للكتلة when في التعليمة case.

التابع []

يستدعي الكتلة البرمجية للتابع، ويضبط قيم وسائط الكتلة عند القيم المعطاة params باستخدام صياغة مشابهة لاستدعاء التوابع. يعيد قيمة آخر تعبير تم تقييمه في الكتلة.

التابع arity

يعيد مؤشرا لعدد الوسائط المقبولة من قبل التابع. يعيد عددًا صحيحًا غير سالب للتوابع التي تأخذ عددًا محددًا من الوسائطا. بالنسبة لتوابع روبي التي تأخذ عددًا متغيرًا من الوسائط، يًعاد العدد -n-1، حيث n هو عدد الوسائط المطلوبة. الوسائط المسماة (Keyword arguments) ستُعد وسيطاً إضافيًا واحدًا، وسيكون ذلك الوسيط إلزاميا إن كان أيٌّ من الوسائط المسماة كذلك. بالنسبة للتوابع المكتوبة بلغة C، سيُعاد العدد -1 إن كانت استدعاء تلك التوابع يأخذ عددًا متغيرًا من الوسائط.

التابع call

يستدعي كتلة التابع، ويضبط وسائط الكتلة عند القيم المعطاة params باستخدام صياغة مشابهة لصياغة استدعاء التوابع. ثم يعد قيمة آخر تعبير تم تقييمه في الكتلة.

التابع clone

يعيد نسخة من هذا التابع.

التابع curry

يعيد كتلة proc مُجزّءة (curried proc) انطلاقا من التابع الذي استُدعيت معه. عندما يكون عدد الوسائط الممررة إلى الكتلة proc أقل من رتبة (arity) التابع، فستعاد كتلة proc مجزءة أخرى. لن يُستدعى التابع فعليًا إلا عندما يتم توفير الوسائط الكافية لإمضاء (signature) التابع.

التابع eql?

يكون كائنان من النوع Method متساويتين إذا كانا مرتبطين بنفس الكائن، ويرجعان إلى نفس التعريف، وكانا مملوكين من قبل نفس الصنف أو الوحدة.

التابع hash

يعيد رمز التكويد (hash) المقابل لكائن Method الذي استُدعي معه.

التابع inspect

يعيد اسم التابع الأصلي (underlying method).

التابع name

يعيد اسم التابع.

التابع original_name

يعيد الاسم الأصلي للتابع الذي استُدعي معه.

التابع owner

يعيد الصنف أو الوحدة (module) التي تعرف التابع .

التابع parameters

يعيد معلومات عن وسائط التابع .

التابع receiver

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

التابع source_location

يعيد اسم الملف المصدر لروبي ورقم السطر الذي يحتوي هذا التابع، أو يعيد nil إن لم يُعرّف هذا التابع في روبي (أي أصلي).

التابع super_method

يعيد كائنا من النوع Method للصنف الأب (superclass)، حتى يمكن استدعاؤه عند استخدام super، أو يعيد nil إن لم يكن هناك تابع في الصنف الأب.

التابع to_proc

يعيد الكائنً من النوع Proc المقابل لهذا التابع.

التابع to_s

يعيد اسم التابع الأصلي (underlying method).

التابع unbind

يفك ارتباط تابع meth من مُستقبِله (receiver) الحالي. يمكن في وقت لاحق ربط UnboundMethod مع كائن جديد من نفس الصنف (انظر UnboundMethod).


مصادر