التابع call‎ الخاص بالصنف Method في روبي

من موسوعة حسوب

يستدعي 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 باستخدام صياغة مشابهة لاستدعاء التوابع. ثم يعيد قيمة آخر تعبير تم تقييمه في الكتلة.

مصادر