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

من موسوعة حسوب
اذهب إلى التنقل اذهب إلى البحث
سطر 1: سطر 1:
<noinclude>{{DISPLAYTITLE: التابع <code>==‎</code> الخاص بالصنف <code>UnboundMethod</code> في روبي}}</noinclude>
+
<noinclude>{{DISPLAYTITLE: التابع <code>bind‎</code> الخاص بالصنف <code>UnboundMethod</code> في روبي}}</noinclude>
 
[[تصنيف: Ruby]]
 
[[تصنيف: Ruby]]
 
[[تصنيف: Ruby Method]]
 
[[تصنيف: Ruby Method]]
 
[[تصنيف: Ruby UnboundMethod]]
 
[[تصنيف: Ruby UnboundMethod]]
يكون كائنان من النوع <code>[[Ruby/UnboundMethod|UnboundMethod]]</code> متساويين إن كانا مرتبطين بنفس الكائن، وكانا يشيران إلى نفس تعريف التابع، وكان لهما نفس الصنف أو الوحدة المالكة.
+
يربط التابع <code>bind</code> [[Ruby/UnboundMethod|التابع الحر]] <code>umeth</code> بالكائن <code>obj</code> (انظر فقرة البنية العامة). إذا كان <code>Klass</code> هو الصنف الذي استُنسخ منه [[Ruby/UnboundMethod|التابع الحر]] <code>umeth</code>، فيجب أن يساوي التعبير <code>obj.kind_of?(Klass)</code> القيمة true.
 +
 
 +
 
 +
 
 +
<code>produces:</code>
 +
 
 +
<syntaxhighlight lang="ruby">In test, class = C
 +
In test, class = B
 +
prog.rb:16:in `bind': bind argument must be an instance of B (TypeError)
 +
from prog.rb:16‎</syntaxhighlight>
 
==البنية العامة==
 
==البنية العامة==
<syntaxhighlight lang="ruby">meth == other_meth  → true or false‎</syntaxhighlight>
+
<syntaxhighlight lang="ruby">bind(obj) → method‎</syntaxhighlight>
 +
==المعاملات==
 +
===<code>obj‎</code>===
 
==القيمة المُعادة==
 
==القيمة المُعادة==
تعاد <code>true</code> إن كان الكائنان متساويين، أو <code>false</code> خلاف ذلك.
+
==أمثلة==
 
+
مثال على استخدام التابع <code>bind‎</code>:
 +
<syntaxhighlight lang="ruby">class A
 +
  def test
 +
    puts "In test, class = #{self.class}"
 +
  end
 +
end
 +
class B < A
 +
end
 +
class C < B
 +
end
 +
um = B.instance_method(:test)
 +
bm = um.bind(C.new)
 +
bm.call
 +
bm = um.bind(B.new)
 +
bm.call
 +
bm = um.bind(A.new)
 +
bm.call‎</syntaxhighlight>
 
==انظر أيضا==
 
==انظر أيضا==
* صفحة الصنف <code>[[Ruby/UnboundMethod|UnboundMethod]]</code>.
+
* التابع <code>[[Ruby/UnboundMethod/arity|arity]]</code>: يعيد التابع <code>arity</code> مؤشرا لعدد الوسائط المقبولة من قبل التابع. يعيد عددًا صحيحًا غير سالب للتوابع التي تأخذ عددًا محددًا من الوسائطا. بالنسبة لتوابع روبي التي تأخذ عددًا متغيرًا من الوسائط، يًعاد العدد -n-1، حيث n هو عدد الوسائط المطلوبة. الوسائط المسماة (Keyword arguments) ستُعد وسيطاً إضافيًا واحدًا، وسيكون ذلك الوسيط إلزاميا إن كان أيٌّ من الوسائط المسماة كذلك. بالنسبة للتوابع المكتوبة بلغة C، سيُعاد العدد -1 إن كانت استدعاء تلك التوابع يأخذ عددًا متغيرًا من الوسائط.
 +
* التابع <code>[[Ruby/UnboundMethod/clone|clone]]</code>: يعيد التابع <code>clone</code> نسخة من هذا التابع.
 
==مصادر==
 
==مصادر==
*[http://ruby-doc.org/core-2.5.1/UnboundMethod.html#method-i-3D-3D قسم  التابع ==‎ في الصنف UnboundMethod‎ في توثيق روبي الرسمي.]
+
*[http://ruby-doc.org/core-2.5.1/UnboundMethod.html#method-i-bind قسم  التابع bind‎ في الصنف UnboundMethod‎ في توثيق روبي الرسمي.]

مراجعة 01:17، 8 نوفمبر 2018

يربط التابع bind التابع الحر umeth بالكائن obj (انظر فقرة البنية العامة). إذا كان Klass هو الصنف الذي استُنسخ منه التابع الحر umeth، فيجب أن يساوي التعبير obj.kind_of?(Klass) القيمة true.


produces:

In test, class = C
In test, class = B
prog.rb:16:in `bind': bind argument must be an instance of B (TypeError)
 from prog.rb:16‎

البنية العامة

bind(obj)  method

المعاملات

obj‎

القيمة المُعادة

أمثلة

مثال على استخدام التابع bind‎:

class A
  def test
    puts "In test, class = #{self.class}"
  end
end
class B < A
end
class C < B
end
um = B.instance_method(:test)
bm = um.bind(C.new)
bm.call
bm = um.bind(B.new)
bm.call
bm = um.bind(A.new)
bm.call

انظر أيضا

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

مصادر