التابع 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
محدَّدة.