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

من موسوعة حسوب
اذهب إلى التنقل اذهب إلى البحث
سطر 3: سطر 3:
 
[[تصنيف: Ruby Method]]
 
[[تصنيف: Ruby Method]]
 
[[تصنيف: Ruby UnboundMethod]]
 
[[تصنيف: Ruby UnboundMethod]]
يربط التابع <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>bind</code> [[Ruby/UnboundMethod|التابعَ الحرَّ]] الذي استُدعي معه بالكائن <code>obj</code> (انظر فقرة البنية العامة).
  
 
+
إذا كان <code>Klass</code> هو الصنف الذي أُنشئ منه [[Ruby/UnboundMethod|التابع الحر]]، فيجب أن يساوي التعبير <code>obj.kind_of?(Klass)‎</code> القيمة <code>true</code>.
 
 
<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">bind(obj) → method‎</syntaxhighlight>
 
<syntaxhighlight lang="ruby">bind(obj) → method‎</syntaxhighlight>
 
==المعاملات==
 
==المعاملات==
 
===<code>obj‎</code>===
 
===<code>obj‎</code>===
 +
كائن.
 +
 
==القيمة المُعادة==
 
==القيمة المُعادة==
 +
يعاد تابعَ.
 +
 
==أمثلة==
 
==أمثلة==
 
مثال على استخدام التابع <code>bind‎</code>:
 
مثال على استخدام التابع <code>bind‎</code>:
سطر 35: سطر 32:
 
bm.call
 
bm.call
 
bm = um.bind(A.new)
 
bm = um.bind(A.new)
bm.call‎</syntaxhighlight>
+
bm.call‎</syntaxhighlight>الناتج:<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>
 
==انظر أيضا==
 
==انظر أيضا==
* التابع <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> نسخة من التابع.
* التابع <code>[[Ruby/UnboundMethod/clone|clone]]</code>: يعيد التابع <code>clone</code> نسخة من هذا التابع.
 
 
==مصادر==
 
==مصادر==
 
*[http://ruby-doc.org/core-2.5.1/UnboundMethod.html#method-i-bind قسم  التابع bind‎ في الصنف UnboundMethod‎ في توثيق روبي الرسمي.]
 
*[http://ruby-doc.org/core-2.5.1/UnboundMethod.html#method-i-bind قسم  التابع bind‎ في الصنف UnboundMethod‎ في توثيق روبي الرسمي.]

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

يربط bind التابعَ الحرَّ الذي استُدعي معه بالكائن obj (انظر فقرة البنية العامة).

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

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

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

الناتج:

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‎

انظر أيضا

  • التابع clone: يعيد clone نسخة من التابع.

مصادر