التابع Proc.curry في روبي
يُعيد التابع 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محدَّدة.