الصنف Proc
في روبي
كائنات الصنف Proc
هي كتلٌ من الشيفرات البرمجية رُبطت إلى مجموعة من المتغيرات المحليَّة. حالما تُربط، يمكن استدعاء الشيفرة في سياقات مختلفة ويبقى الوصول متاحًا لتلك المتغيرات.
def gen_times(factor)
return Proc.new {|n| n*factor }
end
times3 = gen_times(3)
times5 = gen_times(5)
times3.call(12) #=> 36
times5.call(5) #=> 25
times3.call(times5.call(4)) #=> 60
توابع الصنف العامة (Public Class Methods)
new
يُنشئ التابع new
كائنًا جديدًا من الصنف Proc
، ويربطه إلى السياق الحالي.
توابع النسخة العامة (Public Instance Methods)
===
يستدعي الكتلة (block) بتمرير الكائن الواقع على يمينه كمعاملٍ للنسخة proc
بشكلٍ مشابهٍ للتابع Proc.call
.
[]
يستدعي الكتلة المرتبطة بالمتغير الذي استعمل معه مُعيِّنًا معاملات الكتلة إلى القيم المعطاة ضمنه باستخدام شيءٍ مشابهٍ لدلالات استدعاء التابع. يُعيد المعامل قيمة آخر تعبيرٍ قُيِّم في الكتلة.
arity
يُعيد عدد الوسائط الإلزاميَّة في الكائن proc
الذي استدعي معه.
binding
يُعيد الرَّبط (binding) الموافق للكائن Proc
الذي استدعي معه.
call
يستدعي الكتلة المرتبطة بالمتغير الذي استعمل معه مُعيِّنًا معاملات الكتلة إلى القيم المعطاة ضمنه باستخدام شيءٍ مشابهٍ لدلالات استدعاء التابع. يُعيد المعامل قيمة آخر تعبيرٍ قُيِّم في الكتلة.
curry
يُعي كتلة proc
مقسَّمة (curried).
hash
يحسب قيمة التجزئة (hash value) الموافقة لجسم الكتلة proc
التي استدعيت معه ثمَّ يعيدها.
inspect
يُعدُّ اسمًا بديلًا (alias) للتابع to_s
.
?lambda
يتحقَّق إذا كانت معالجة الوسائط صارمةً في الكائن Proc
.
parameters
يُعيد معلوماتٍ عن معاملات كتلة محدَّدة من النوع proc
.
source_location
يُعيد اسم ملف روبي المصدري ورقم السَّطر الحاوي على كتلة proc
محدَّدة.
to_proc
يُعدُّ جزءًا من البروتوكول المستخدم في تحويل الكائنات إلى كائناتٍ من الصنف Proc
.
to_s
يُعيد المُعرِّف الفريد (unique identifier) لكتلة proc
محدّدة بالتزامن مع إشارة لمكان تعريف هذه الكتلة.
yield
يستدعي الكتلة المرتبطة بالمتغير الذي استعمل معه مُعيِّنًا معاملات الكتلة إلى القيم المعطاة ضمنه باستخدام شيءٍ مشابهٍ لدلالات استدعاء التابع. يُعيد المعامل قيمة آخر تعبيرٍ قُيِّم في الكتلة.
ملاحظات إضافيَّة
العديد من التوابع التي يستخدمها المبرمجون مع كتل proc
(مثل call) تأتي من الصّنف Method
.
إذا لم تجد ما تبحث عنه في توثيق الصنف Proc
، فابحث في توثيق الصنف Method
.