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

من موسوعة حسوب
لا ملخص تعديل
ط مراجعة وتدقيق.
سطر 1: سطر 1:
<noinclude>{{DISPLAYTITLE: التابع <code>bind‎</code> الخاص بالصنف <code>UnboundMethod</code> في روبي}}</noinclude>
<noinclude>{{DISPLAYTITLE: التابع <code>UnboundMethod.bind‎</code> في روبي}}</noinclude>
[[تصنيف: Ruby]]
[[تصنيف: Ruby]]
[[تصنيف: Ruby Method]]
[[تصنيف: Ruby Method]]
[[تصنيف: Ruby UnboundMethod]]
[[تصنيف: Ruby UnboundMethod]]
يربط <code>bind</code> [[Ruby/UnboundMethod|التابعَ الحرَّ]] الذي استُدعي معه بالكائن <code>obj</code> (انظر فقرة البنية العامة).
يربط <code>bind</code> [[Ruby/UnboundMethod|التابعَ الحرَّ]] الذي استُدعي معه بالكائن الذي مُرِّر إليه.


إذا كان <code>Klass</code> هو الصنف الذي أُنشئ منه [[Ruby/UnboundMethod|التابع الحر]]، فيجب أن يساوي التعبير <code>obj.kind_of?(Klass)‎</code> القيمة <code>true</code>.
إذا كان <code>Klass</code> هو الصنف الذي أُنشئ منه [[Ruby/UnboundMethod|التابع الحر]]، فيجب أن يساوي التعبير <code>obj.kind_of?(Klass)‎</code> القيمة <code>true</code>.
سطر 10: سطر 10:
==المعاملات==
==المعاملات==
===<code>obj‎</code>===
===<code>obj‎</code>===
كائن.
كائن يراد ربطه بالتابع الحر.


==القيمة المُعادة==
==القيمة المعادة==
يعاد تابعَ.
يعاد التابع الناتج عن ربط التابع الحر بالكائن <code>obj</code>.


==أمثلة==
==أمثلة==
سطر 32: سطر 32:
bm.call
bm.call
bm = um.bind(A.new)
bm = um.bind(A.new)
bm.call‎</syntaxhighlight>الناتج:<syntaxhighlight lang="ruby">In test, class = C
bm.call‎</syntaxhighlight>الناتج:<syntaxhighlight lang="text">In test, class = C
In test, class = B
In test, class = B
prog.rb:16:in `bind': bind argument must be an instance of B (TypeError)
prog.rb:16:in `bind': bind argument must be an instance of B (TypeError)
  from prog.rb:16‎</syntaxhighlight>
  from prog.rb:16‎</syntaxhighlight>
==انظر أيضا==
==انظر أيضًا==
* التابع <code>[[Ruby/UnboundMethod/clone|clone]]</code>: يعيد <code>clone</code> نسخة من التابع.
* التابع <code>[[Ruby/UnboundMethod/clone|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‎ في توثيق روبي الرسمي.]

مراجعة 07:25، 8 ديسمبر 2018

يربط bind التابعَ الحرَّ الذي استُدعي معه بالكائن الذي مُرِّر إليه.

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

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

bind(obj)  method

المعاملات

obj‎

كائن يراد ربطه بالتابع الحر.

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

يعاد التابع الناتج عن ربط التابع الحر بالكائن 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: يعيد نسخة من التابع.

مصادر