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

من موسوعة حسوب
< Ruby‏ | Method
أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE: التابع <code>call‎</code> الخاص بالصنف <code>Method</code> في روبي}}</noinclude> تصنيف: Ruby تصنيف...'
 
لا ملخص تعديل
سطر 3: سطر 3:
[[تصنيف: Ruby Method]]
[[تصنيف: Ruby Method]]
[[تصنيف: Ruby Method]]
[[تصنيف: Ruby Method]]
يستدعي التابع <code>call</code> كتلة التابع، ويضبط وسائط الكتلة عند القيم المعطاة params باستخدام صياغة مشابهة لصياغة استدعاء التوابع. ثم يعد قيمة آخر تعبير تم تقييمه في الكتلة.
يستدعي <code>call</code> كتلة التابع الذي استٌدعي معه، ويضبط وسائط الكتلة عند القيم المعطاة <code>params</code> باستخدام صياغة مشابهة لصياغة استدعاء التوابع. ثم يعيد قيمة آخر تعبير تم تقييمه في الكتلة.


لاحظ أن <code>prc.()</code> يستدعي <code>prc.call()</code> مع تمرير الوسائط المحددة. وهي صياغة مختصرة لإخفاء "call".
لاحظ أن <code>prc.()</code> يستدعي <code>prc.call()</code> مع تمرير الوسائط المعطاة. وهي صياغة مختصرة لإخفاء التابع "<code>call</code>".
بالنسبة لكائنات procs الذي تم إنشاؤه باستخدام <code>lambda</code> أو <code>->()</code>، قسيُطلق خطأ إذا كان عدد الوسائط الممررة إلى proc غير مناسب. بالنسبة لكائنات proc التي تم إنشاؤها باستخدام <code>Proc.new</code> أو <code>Kernel.proc</code> ، يتم تجاهل الوسائط الإضافية بصمت، وتُعطى للوسائط غير المُمررة القيمة <code>nil</code>.


انظر أيضا صفحة <code>Proc#lambda?</code>.
بالنسبة للكائنات <code>procs</code> التي تم إنشاؤها باستخدام <code>lambda</code> أو ‎<code>->()‎‎‎</code>، قسيُطلق خطأ إذا كان عدد الوسائط الممررة إلى <code>proc</code> غير صحيح. بالنسبة لكائنات <code>proc</code> التي تم إنشاؤها باستخدام <code>[[Ruby/Proc/new|Proc.new]]</code> أو <code>[[Ruby/Kernel/proc|Kernel.proc]]</code> ، فسيتم تجاهل الوسائط الإضافية بصمت، وتُعطى للوسائط غير المُمررة القيمة <code>nil</code>.
 
انظر أيضا <code>[[Ruby/Proc/lambda-3F|Proc#lambda?]]‎</code>.
==البنية العامة==
==البنية العامة==
<syntaxhighlight lang="ruby">call(params,...)→ obj‎</syntaxhighlight>
<syntaxhighlight lang="ruby">call(params,...)→ obj‎</syntaxhighlight>
==المعاملات==
==المعاملات==
===<code>params‎</code>===
===<code>params‎</code>===
 
الوسائط التي ستُمرر إلى الكتلة.
===<code>...‎</code>===
 


==القيمة المُعادة==
==القيمة المُعادة==
يعيد قيمة آخر تعبير تم تقييمه في الكتلة.


==أمثلة==
==أمثلة==
سطر 25: سطر 25:
a_proc[9, 1, 2, 3]        #=> [9, 18, 27]
a_proc[9, 1, 2, 3]        #=> [9, 18, 27]
a_proc.(9, 1, 2, 3)        #=> [9, 18, 27]
a_proc.(9, 1, 2, 3)        #=> [9, 18, 27]
a_proc.yield(9, 1, 2, 3)  #=> [9, 18, 27]</syntaxhighlight>
a_proc.yield(9, 1, 2, 3)  #=> [9, 18, 27]
 
a_proc = proc {|a,b| [a,b] }
a_proc.call(1)  #=> [1, nil]
 
a_proc = lambda {|a,b| [a,b] }
a_proc.call(1)  # ArgumentError: wrong number of arguments (given 1, expected 2)
</syntaxhighlight>
==انظر أيضا==
==انظر أيضا==
* التابع <code>[[Ruby/Method/arity|arity]]</code>: يعيد  مؤشرا لعدد الوسائط المقبولة من قبل التابع. يعيد عددًا صحيحًا غير سالب للتوابع التي تأخذ عددًا محددًا من الوسائطا. بالنسبة لتوابع روبي التي تأخذ عددًا متغيرًا من الوسائط، يًعاد العدد -n-1، حيث n هو عدد الوسائط المطلوبة. الوسائط المسماة (Keyword arguments) ستُعد وسيطاً إضافيًا واحدًا، وسيكون ذلك الوسيط إلزاميا إن كان أيٌّ من الوسائط المسماة كذلك. بالنسبة للتوابع المكتوبة بلغة C، سيُعاد العدد -1 إن كانت استدعاء تلك التوابع يأخذ عددًا متغيرًا من الوسائط.
* معامل الفهرسة<code>[[Ruby/Method/index|[]]]</code>: يستدعي معامل الفهرسة<code>[]</code> الكتلة البرمجية للتابع، ويضبط قيم وسائط الكتلة عند القيم المعطاة <code>params</code> باستخدام صياغة مشابهة لاستدعاء التوابع. ثم يعيد قيمة آخر تعبير تم تقييمه في الكتلة.
* التابع <code>[[Ruby/Method/clone|clone]]</code>: يعيد نسخة من هذا التابع.


==مصادر==
==مصادر==
*[http://ruby-doc.org/core-2.5.1/Method.html#method-i-call قسم  التابع call‎ في الصنف Method‎ في توثيق روبي الرسمي.]
*[http://ruby-doc.org/core-2.5.1/Method.html#method-i-call قسم  التابع call‎ في الصنف Method‎ في توثيق روبي الرسمي.]

مراجعة 19:54، 25 أكتوبر 2018

يستدعي call كتلة التابع الذي استٌدعي معه، ويضبط وسائط الكتلة عند القيم المعطاة params باستخدام صياغة مشابهة لصياغة استدعاء التوابع. ثم يعيد قيمة آخر تعبير تم تقييمه في الكتلة.

لاحظ أن ‎prc.()‎ يستدعي prc.call()‎ مع تمرير الوسائط المعطاة. وهي صياغة مختصرة لإخفاء التابع "call".

بالنسبة للكائنات procs التي تم إنشاؤها باستخدام lambda أو ‎->()‎‎‎، قسيُطلق خطأ إذا كان عدد الوسائط الممررة إلى proc غير صحيح. بالنسبة لكائنات proc التي تم إنشاؤها باستخدام Proc.new أو Kernel.proc ، فسيتم تجاهل الوسائط الإضافية بصمت، وتُعطى للوسائط غير المُمررة القيمة nil.

انظر أيضا Proc#lambda?.

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

call(params,...) obj

المعاملات

params‎

الوسائط التي ستُمرر إلى الكتلة.

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

يعيد قيمة آخر تعبير تم تقييمه في الكتلة.

أمثلة

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

a_proc = Proc.new {|scalar, *values| values.map {|value| value*scalar } }
a_proc.call(9, 1, 2, 3)    #=> [9, 18, 27]
a_proc[9, 1, 2, 3]         #=> [9, 18, 27]
a_proc.(9, 1, 2, 3)        #=> [9, 18, 27]
a_proc.yield(9, 1, 2, 3)   #=> [9, 18, 27]

a_proc = proc {|a,b| [a,b] }
a_proc.call(1)   #=> [1, nil]

a_proc = lambda {|a,b| [a,b] }
a_proc.call(1)   # ArgumentError: wrong number of arguments (given 1, expected 2)

انظر أيضا

  • معامل الفهرسة[]: يستدعي معامل الفهرسة[] الكتلة البرمجية للتابع، ويضبط قيم وسائط الكتلة عند القيم المعطاة params باستخدام صياغة مشابهة لاستدعاء التوابع. ثم يعيد قيمة آخر تعبير تم تقييمه في الكتلة.

مصادر