الفرق بين المراجعتين ل"Ruby/Proc/5B-5D"

من موسوعة حسوب
< Ruby‏ | Proc
اذهب إلى التنقل اذهب إلى البحث
(أنشأ الصفحة ب'{{DISPLAYTITLE:المعامل <code>[]</code> في الصنف <code>Proc.call</code> في روبي}} يستدعي المعامل <code>[]</code> الكتلة المرت...')
 
ط
 
سطر 40: سطر 40:
  
 
== مصادر ==
 
== مصادر ==
* [http://ruby-doc.org/core-2.5.1/Proc.html#method-i-5B-5D صفحة المعامل [] في الصنف Proc في توثيق روبي الرسمي.]
+
* [http://ruby-doc.org/core-2.5.1/Proc.html#method-i-5B-5D <nowiki>صفحة المعامل [] في الصنف Proc في توثيق روبي الرسمي.</nowiki>]
 
[[تصنيف:Ruby]]
 
[[تصنيف:Ruby]]
 
[[تصنيف:Ruby Operator]]
 
[[تصنيف:Ruby Operator]]
 
[[تصنيف:Ruby Proc]]
 
[[تصنيف:Ruby Proc]]

المراجعة الحالية بتاريخ 08:30، 26 نوفمبر 2018

يستدعي المعامل [] الكتلة المرتبطة بالمتغير الذي استعمل معه مُعيِّنًا معاملات الكتلة إلى القيم المعطاة ضمنه باستخدام شيءٍ مشابهٍ لدلالات استدعاء التابع. يُعيد المعامل قيمة آخر تعبيرٍ قُيِّم في الكتلة.

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]

لاحظ أنَّ ().prc يستدعي ()prc.call مع المعاملات المُمرَّرة إليه نفسها. يُعدُّ هذا تجميلًا لغويًّا (syntactic sugar) لإخفاء "call" فقط. من أجل الكتل procs المُنشأة باستخدام lambda أو ()<-، يُرمى خطأٌ إذا مُرِّر عدد خطأ من المعاملات إلى الكتلة. وأمَّا من أجل الكتل procs المُنشأة باستخدام Proc.new أو Kernel.proc، يتم تجاهل المعاملات الزائدة الممرَّرة ضمنيًّا وتُعيَّن القيمة nil لكل معامل منها.

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)

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

prc[params,...]  obj

المعاملات

params

القيم التي ستُعيَّن إلى المعاملات ضمن الكتلة.

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

يُعاد الكائن الناتج عن استدعاء الكتلة وتنفيذها مع تمرير المعامل params إليها.

انظر أيضًا

  • التابع hash: يحسب قيمة التجزئة الموافقة لجسم الكتلة proc التي استدعيت معه ثمَّ يعيدها.
  • التابع ?lambda: يتحقَّق إذا كانت معالجة الوسائط صارمةً في الكائن Proc.
  • التابع to_proc: يُعدُّ جزءًا من البروتوكول المستخدم في تحويل الكائنات إلى كائناتٍ من الصنف Proc.
  • المعامل ===: يستدعي الكتلة بتمرير الكائن الواقع على يمينه كمعاملٍ للنسخة proc.

مصادر