التابع Proc.curry في روبي

من موسوعة حسوب
< Ruby‏ | Proc
مراجعة 08:20، 26 نوفمبر 2018 بواسطة محمد-خطيب (نقاش | مساهمات) (أنشأ الصفحة ب'{{DISPLAYTITLE:التابع <code>Proc.curry</code> في روبي}} يُعيد التابع <code>curry</code> كتلة <code>proc</code> مقسَّمة (curried). إذ...')
(فرق) → مراجعة أقدم | المراجعة الحالية (فرق) | مراجعة أحدث ← (فرق)

يُعيد التابع curry كتلة proc مقسَّمة (curried). إذا أُعطي الوسيط arity الاختياري، فسيُحدِّد التابع عدد الوسائط آنذاك. تستقبل كتلة proc المقسَّمة بعض الوسائط. إذا زُوِّدت بعددٍ كافٍ من الوسائط، فستُمرِّر الوسائط المُزوَّدة إلى كتلة proc الأصلية وتُعيد النتيجة. خلاف ذلك، تُعيد كتلة proc مقسَّمةً أخرى لتأخذ باقي الوسائط.

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

curry  a_proc
curry(arity)  a_proc

المعاملات

arity

وسيط اختياري يُعطى إذا أُريد من التابع تحديد عدد الوسائط.

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

تُعاد كتلة proc مقسَّمة، يُعاد عدد الوسائط إذا أعطي معامل arity الاختياري.

أمثلة

مثالٌ عن استخدام التابع curry:

b = proc {|x, y, z| (x||0) + (y||0) + (z||0) }
p b.curry[1][2][3]           #=> 6
p b.curry[1, 2][3, 4]        #=> 6
p b.curry(5)[1][2][3][4][5]  #=> 6
p b.curry(5)[1, 2][3, 4][5]  #=> 6
p b.curry(1)[1]              #=> 1

b = proc {|x, y, z, *w| (x||0) + (y||0) + (z||0) + w.inject(0, &:+) }
p b.curry[1][2][3]           #=> 6
p b.curry[1, 2][3, 4]        #=> 10
p b.curry(5)[1][2][3][4][5]  #=> 15
p b.curry(5)[1, 2][3, 4][5]  #=> 15
p b.curry(1)[1]              #=> 1

b = lambda {|x, y, z| (x||0) + (y||0) + (z||0) }
p b.curry[1][2][3]           #=> 6
p b.curry[1, 2][3, 4]        #=> wrong number of arguments (given 4, expected 3)
p b.curry(5)                 #=> wrong number of arguments (given 5, expected 3)
p b.curry(1)                 #=> wrong number of arguments (given 1, expected 3)

b = lambda {|x, y, z, *w| (x||0) + (y||0) + (z||0) + w.inject(0, &:+) }
p b.curry[1][2][3]           #=> 6
p b.curry[1, 2][3, 4]        #=> 10
p b.curry(5)[1][2][3][4][5]  #=> 15
p b.curry(5)[1, 2][3, 4][5]  #=> 15
p b.curry(1)                 #=> wrong number of arguments (given 1, expected 3)

b = proc { :foo }
p b.curry[]                  #=> :foo

انظر أيضًا

  • التابع arity: يُعيد عدد الوسائط الإلزاميَّة في الكائن proc الذي استدعي معه.
  • التابع binding: يُعيد الرَّبط الموافق للكائن Proc الذي استدعي معه.
  • التابع to_s: يُعيد المُعرِّف الفريد لكتلة proc محدّدة بالتزامن مع إشارة لمكان تعريف هذه الكتلة.
  • التابع parameters: يُعيد معلوماتٍ عن معاملات كتلة محدَّدة من النوع proc.
  • التابع source_location: يُعيد اسم ملف روبي المصدري ورقم السَّطر الحاوي على كتلة procمحدَّدة.

مصادر