الفرق بين المراجعتين لصفحة: «Ruby/Method/call»
أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE: التابع <code>call</code> الخاص بالصنف <code>Method</code> في روبي}}</noinclude> تصنيف: Ruby تصنيف...' |
لا ملخص تعديل |
||
سطر 3: | سطر 3: | ||
[[تصنيف: Ruby Method]] | [[تصنيف: Ruby Method]] | ||
[[تصنيف: Ruby Method]] | [[تصنيف: Ruby Method]] | ||
يستدعي | يستدعي <code>call</code> كتلة التابع الذي استٌدعي معه، ويضبط وسائط الكتلة عند القيم المعطاة <code>params</code> باستخدام صياغة مشابهة لصياغة استدعاء التوابع. ثم يعيد قيمة آخر تعبير تم تقييمه في الكتلة. | ||
لاحظ أن <code>prc.()</code> يستدعي <code>prc.call()</code> مع تمرير الوسائط | لاحظ أن <code>prc.()</code> يستدعي <code>prc.call()</code> مع تمرير الوسائط المعطاة. وهي صياغة مختصرة لإخفاء التابع "<code>call</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>=== | ||
الوسائط التي ستُمرر إلى الكتلة. | |||
==القيمة المُعادة== | ==القيمة المُعادة== | ||
يعيد قيمة آخر تعبير تم تقييمه في الكتلة. | |||
==أمثلة== | ==أمثلة== | ||
سطر 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] | 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/index|[]]]</code>: يستدعي معامل الفهرسة<code>[]</code> الكتلة البرمجية للتابع، ويضبط قيم وسائط الكتلة عند القيم المعطاة <code>params</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
باستخدام صياغة مشابهة لاستدعاء التوابع. ثم يعيد قيمة آخر تعبير تم تقييمه في الكتلة.