التابع Enumerable.sum في روبي

من موسوعة حسوب

يعيد التابع sum مجموع عناصر الكائن القابل للتعداد الذي استدعي معه.

إن أعطيت كتلة، فستُطبَّق الكتلة على كل عنصر قبل الإضافة.

قد لا يأخذ التابع sum بالحسبان إعادة تعريف المعاملات + مثل + في الصنف Integer.

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

sum(init=0)  number
sum(init=0) {|e| expr }  number

المعاملات

init

القيمة البدائية المراد البدء بها في عملية الجمع. القيمة الافتراضية هي: 0.

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

يعاد عدد يمثِّل ناتج جمع عناصر الكائن القابل للتعداد المعطى.

أمثلة

مثال على استعمال التابع sum:

{ 1 => 10, 2 => 20 }.sum {|k, v| k * v }  #=> 50
(1..10).sum                               #=> 55
(1..10).sum {|v| v * 2 }                  #=> 110
[Object.new].each.sum                     #=> TypeError

يمكن استعمال هذا التابع مع الكائنات الغير عددية عبر تحديد المعامل init بشكل صريح:

{ 1 => 10, 2 => 20 }.sum([])                   #=> [1, 10, 2, 20]
"a\nb\nc".each_line.lazy.map(&:chomp).sum("")  #=> "abc"

انظر أيضًا

  • التابع group_by: يجمِّع عناصر الكائن القابل للتعداد الذي استدعي معه في مجموعات بحسب النتيجة المقابلة لكل عنصر التي تعيدها الكتلة المعطاة بعد تمريره إليها.
  • التابع max: يبحث عن قيمة أكبر عنصر من عناصر الكائن القابل للتعداد الذي استدعي معه ثم يعيده.
  • التابع reduce: يجمع جميع عناصر الكائن القابل للتعداد الذي استدعي معه عبر تطبيق عملية ثنائية تُحدَّد بوساطة كتلة أو رمز يسمي تابعًا أو معاملًا.

مصادر