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

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


لاحظ أن ‎<code>prc.()‎</code> يستدعي <code>prc.call()‎</code> مع تمرير الوسائط المعطاة. وهي صياغة مختصرة لإخفاء التابع "<code>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>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>.
انظر أيضا <code>[[Ruby/Proc/lambda-3F|Proc.lambda?]]‎</code>.
==البنية العامة==
==البنية العامة==
<syntaxhighlight lang="ruby">prc[params,...]  → obj‎</syntaxhighlight>
<syntaxhighlight lang="ruby">prc[params,...]  → obj‎</syntaxhighlight>
==القيمة المُعادة==
==القيمة المعادة==
يعيد قيمة آخر تعبير تم تقييمه في الكتلة.
تعاد قيمة آخر تعبير تم تقييمه في الكتلة.
 
==أمثلة==
==أمثلة==
مثال على استخدام المعامل<code>[]‎</code>:
مثال على استخدام المعامل<code>[]‎</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]
سطر 23: سطر 21:
a_proc.yield(9, 1, 2, 3)  #=> [9, 18, 27]‎</syntaxhighlight>
a_proc.yield(9, 1, 2, 3)  #=> [9, 18, 27]‎</syntaxhighlight>
==انظر أيضا==
==انظر أيضا==
* التابع <code>[[Ruby/Method/arity|arity]]</code>: يعيد  مؤشرا لعدد الوسائط المقبولة من قبل التابع.
*التابع <code>[[Ruby/Method/arity|arity]]</code>: يعيد  مؤشرًا لعدد المعاملات المقبولة من قبل التابع.
* التابع <code>[[Ruby/Method/call|call]]</code>: ييستدعي <code>call</code> كتلة التابع الذي استٌدعي معه، ويضبط وسائط الكتلة عند القيم المعطاة <code>params</code> باستخدام صياغة مشابهة لصياغة استدعاء التوابع. ثم يعيد قيمة آخر تعبير تم تقييمه في الكتلة.
*التابع <code>[[Ruby/Method/call|call]]</code>: يستدعي كتلة التابع الذي استٌدعي معه، ويضبط معاملات الكتلة عند القيم المعطاة باستخدام صياغة مشابهة لصياغة استدعاء التوابع ثم يعيد قيمة آخر تعبير تم تقييمه في الكتلة.
 
==مصادر==
==مصادر==
*[http://ruby-doc.org/core-2.5.1/Method.html#method-i-5B-5D <nowiki>قسم المعامل []‎ في الصنف Method‎ في توثيق روبي الرسمي.</nowiki>]
*[http://ruby-doc.org/core-2.5.1/Method.html#method-i-5B-5D <nowiki>قسم المعامل []‎ في الصنف Method‎ في توثيق روبي الرسمي.</nowiki>]

مراجعة 05:11، 18 نوفمبر 2018

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

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

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

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

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

prc[params,...]   obj

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

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

أمثلة

مثال على استخدام المعامل[]‎:

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]‎

انظر أيضا

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

مصادر