الفرق بين المراجعتين لصفحة: «Ruby/UnboundMethod/bind»
< Ruby | UnboundMethod
لا ملخص تعديل |
لا ملخص تعديل |
||
سطر 1: | سطر 1: | ||
<noinclude>{{DISPLAYTITLE: التابع <code> | <noinclude>{{DISPLAYTITLE: التابع <code>bind</code> الخاص بالصنف <code>UnboundMethod</code> في روبي}}</noinclude> | ||
[[تصنيف: Ruby]] | [[تصنيف: Ruby]] | ||
[[تصنيف: 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>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"> | <syntaxhighlight lang="ruby">bind(obj) → method</syntaxhighlight> | ||
==المعاملات== | |||
===<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> | |||
==انظر أيضا== | ==انظر أيضا== | ||
* | * التابع <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- | *[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
نسخة من هذا التابع.