الفرق بين المراجعتين لصفحة: «Ruby/Method/call»
أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE: التابع <code>call</code> الخاص بالصنف <code>Method</code> في روبي}}</noinclude> تصنيف: Ruby تصنيف...' |
جميل-بيلوني (نقاش | مساهمات) ط مراجعة وتدقيق. |
||
(مراجعة متوسطة واحدة بواسطة مستخدم واحد آخر غير معروضة) | |||
سطر 2: | سطر 2: | ||
[[تصنيف: Ruby]] | [[تصنيف: Ruby]] | ||
[[تصنيف: Ruby Method]] | [[تصنيف: Ruby Method]] | ||
[[تصنيف: Ruby Method]] | [[تصنيف: Ruby Method Class]] | ||
يستدعي | يستدعي <code>call</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>=== | ||
المعاملات التي ستُمرر إلى الكتلة. | |||
==القيمة المعادة== | |||
تعاد قيمة آخر تعبير تم تقييمه في الكتلة. | |||
==القيمة | |||
==أمثلة== | ==أمثلة== | ||
مثال على استخدام التابع <code>call</code>: | مثال على استخدام التابع <code>call</code>:<syntaxhighlight lang="ruby">a_proc = Proc.new {|scalar, *values| values.map {|value| value*scalar } } | ||
<syntaxhighlight lang="ruby">a_proc = Proc.new {|scalar, *values| values.map {|value| value*scalar } } | |||
a_proc.call(9, 1, 2, 3) #=> [9, 18, 27] | 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.(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>: يستدعي الكتلة البرمجية للتابع، ويضبط قيم وسائط الكتلة عند القيم المعطاة ضمنه باستخدام صياغة مشابهة لاستدعاء التوابع ثم يعيد قيمة آخر تعبير تم تقييمه في الكتلة. | ||
==مصادر== | ==مصادر== | ||
*[http://ruby-doc.org/core-2.5.1/Method.html#method-i-call قسم | *[http://ruby-doc.org/core-2.5.1/Method.html#method-i-call قسم التابع call في الصنف Method في توثيق روبي الرسمي.] |
المراجعة الحالية بتاريخ 05:17، 18 نوفمبر 2018
يستدعي call
كتلة التابع الذي استٌدعي معه، ويضبط وسائط الكتلة عند القيم المُمرَّرة إليه باستخدام صياغة مشابهة لصياغة استدعاء التوابع ثم يعيد قيمة آخر تعبير تم تقييمه في الكتلة.
لاحظ أن 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)
انظر أيضا
- معامل الفهرسة
[]
: يستدعي الكتلة البرمجية للتابع، ويضبط قيم وسائط الكتلة عند القيم المعطاة ضمنه باستخدام صياغة مشابهة لاستدعاء التوابع ثم يعيد قيمة آخر تعبير تم تقييمه في الكتلة.