الفرق بين المراجعتين لصفحة: «Ruby/UnboundMethod/bind»
< Ruby | UnboundMethod
لا ملخص تعديل |
جميل-بيلوني (نقاش | مساهمات) طلا ملخص تعديل |
||
(3 مراجعات متوسطة بواسطة مستخدمين اثنين آخرين غير معروضة) | |||
سطر 1: | سطر 1: | ||
<noinclude>{{DISPLAYTITLE: التابع | <noinclude>{{DISPLAYTITLE: التابع <code>UnboundMethod.bind</code> في روبي}}</noinclude> | ||
[[تصنيف: Ruby]] | [[تصنيف: Ruby]] | ||
[[تصنيف: Ruby Method]] | [[تصنيف: Ruby Method]] | ||
[[تصنيف: Ruby UnboundMethod]] | [[تصنيف: Ruby UnboundMethod]] | ||
يربط التابع <code>bind</code> [[Ruby/UnboundMethod|التابعَ الحرَّ]] الذي استُدعي معه بالكائن الذي مُرِّر إليه. | |||
إذا كان <code>Klass</code> هو الصنف الذي أُنشئ منه [[Ruby/UnboundMethod|التابع الحر]]، فيجب أن يساوي التعبير <code>obj.kind_of?(Klass)</code> القيمة <code>true</code>. | |||
==البنية العامة== | ==البنية العامة== | ||
<syntaxhighlight lang="ruby"> | <syntaxhighlight lang="ruby">bind(obj) → method</syntaxhighlight> | ||
== | ==المعاملات== | ||
===<code>obj</code>=== | |||
كائن يراد ربطه بالتابع الحر. | |||
==القيمة المعادة== | |||
يعاد التابع الناتج عن ربط التابع الحر بالكائن <code>obj</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>الناتج:<syntaxhighlight lang="text">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/clone|clone]]</code>: يعيد نسخة من التابع. | |||
==مصادر== | ==مصادر== | ||
*[http://ruby-doc.org/core-2.5.1/UnboundMethod.html#method-i- | *[http://ruby-doc.org/core-2.5.1/UnboundMethod.html#method-i-bind قسم التابع bind في الصنف UnboundMethod في توثيق روبي الرسمي.] |
المراجعة الحالية بتاريخ 07:29، 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
: يعيد نسخة من التابع.