الفرق بين المراجعتين لصفحة: «Kotlin/collections/reduce»

من موسوعة حسوب
ط مراجعة وتدقيق.
طلا ملخص تعديل
سطر 1: سطر 1:
<noinclude>{{DISPLAYTITLE: الدالة <code>reduce()‎</code> في Kotlin}}</noinclude>
<noinclude>{{DISPLAYTITLE: الدالة <code>reduce()‎</code> في Kotlin}}</noinclude>
تجمِّع الدالة <code>reduce()‎</code> قيم عناصر الكائن المستدعى معها وتطبق عملية معينة على القيمة المجمعة الحالية في كل مرة تجمَّع فيها قيم العناصر.  
تجمِّع الدالة <code>reduce()‎</code> ناتج تطبيق عملية معينة على قيمة كل عنصر من عناصر الكائن المستدعى معها والقيمة المتراكمة الحالية (انظر قسم "البنية العامة" لشرح أوسع حول عملها).  
==البنية العامة==
==البنية العامة==
<syntaxhighlight lang="kotlin">
<syntaxhighlight lang="kotlin">
سطر 57: سطر 57:
</syntaxhighlight>
</syntaxhighlight>
==انظر أيضًا==
==انظر أيضًا==
*الدالة <code>[[Kotlin/collections/reduceRight|reduceRight()‎]]</code>: تجمع بشكل تراكمي ناتج تطبيق عملية معيَّنة على قيمة كل عنصر من عناصر المصفوفة أو المجموعة (بدءًا من اليمين إلى اليسار) المستدعاة معها والقيمة التراكمية الحالية. 
*الدالة <code>[[Kotlin/collections/reduceIndexed|reduceIndexed()]]</code>‎: تُراكِم القيم بدءًا من العنصر الأول وتطبّق العملية <code>operation</code> من اليسار إلى اليمين على القيمة المُتراكمة الراهنة وعلى العنصر التالي من [[Kotlin/Array|المصفوفة]] أو [[Kotlin/collections|المجموعة]] التي استُدعيت عبرها وكذلك فهرسه. وتُعيد القيمة النهائية.
*الدالة <code>[[Kotlin/collections/reduceIndexed|reduceIndexed()]]</code>‎: تُراكِم القيم بدءًا من العنصر الأول وتطبّق العملية <code>operation</code> من اليسار إلى اليمين على القيمة المُتراكمة الراهنة وعلى العنصر التالي من [[Kotlin/Array|المصفوفة]] أو [[Kotlin/collections|المجموعة]] التي استُدعيت عبرها وكذلك فهرسه. وتُعيد القيمة النهائية.
*الدالة <code>[[Kotlin/collections/reduceRightIndexed|reduceRightIndexed()‎]]</code>: تجمع الناتج التراكمي لتطبيق عملية معينة على قيمة كل عنصر من عناصر المصفوفة أو المجموعة (بدءًا من اليمين إلى اليسار) المستدعاة معها وفهرس ذلك العنصر والقيمة المجمَّعة الحالية.
*الدالة <code>[[Kotlin/collections/groupBy|groupBy()‎]]</code>: تجمِّع عناصر <nowiki/>[[Kotlin/Array|المصفوفة]] أو <nowiki/>[[Kotlin/collections|المجموعة]] التي استُدعيت معها في مجموعات، إذ تطبق دالة محدَّدة على كل عنصر ثمَّ تعاد خريطة تحوي مجموعاتٍ مفتاحُ كلِّ واحدةٍ منها مرتبطٌ بقائمة من العناصر المقابلة.
*الدالة <code>[[Kotlin/collections/groupBy|groupBy()‎]]</code>: تجمِّع عناصر <nowiki/>[[Kotlin/Array|المصفوفة]] أو <nowiki/>[[Kotlin/collections|المجموعة]] التي استُدعيت معها في مجموعات، إذ تطبق دالة محدَّدة على كل عنصر ثمَّ تعاد خريطة تحوي مجموعاتٍ مفتاحُ كلِّ واحدةٍ منها مرتبطٌ بقائمة من العناصر المقابلة.
*الدالة <code>[[Kotlin/collections/foldRight|foldRight()]]</code>‎: تجمع بشكل تراكمي ناتج تطبيق عملية معيَّنة على قيمة كل عنصر من عناصر المصفوفة أو المجموعة (بدءًا من اليمين إلى اليسار) المستدعاة معها والقيمة التراكمية الحالية بالإضافة إلى القيمة الأولية إن أعطيت. 
*الدالة <code>[[Kotlin/collections/fold|fold()]]</code> تراكميًّا ناتج تطبيق عملية معينة على قيمة كل عنصر من عناصر الكائن المستدعى معها والقيمة التراكمية الحالية بالإضافة إلى قيمة أولية إن أعطيت، ويختلف سلوكها بحسب نوع الكائنات المستدعاة معها والمعاملات المُمرّرة إليها 
==مصادر==
==مصادر==
*[https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/reduce.html صفحة الدالة reduce()‎ في التوثيق الرسميّ للمكتبة القياسيّة في لغة Kotlin.]
*[https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/reduce.html صفحة الدالة reduce()‎ في التوثيق الرسميّ للمكتبة القياسيّة في لغة Kotlin.]
[[تصنيف:Kotlin]]
[[تصنيف:Kotlin]]
[[تصنيف:Kotlin Functions]]
[[تصنيف:Kotlin Functions]]

مراجعة 18:43، 6 أغسطس 2018

تجمِّع الدالة reduce()‎ ناتج تطبيق عملية معينة على قيمة كل عنصر من عناصر الكائن المستدعى معها والقيمة المتراكمة الحالية (انظر قسم "البنية العامة" لشرح أوسع حول عملها).

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

inline fun <S, T : S> Array<out T>.reduce(
    operation: (acc: S, T) -> S
): S 
inline fun ByteArray.reduce(
    operation: (acc: Byte, Byte) -> Byte
): Byte 
inline fun ShortArray.reduce(
    operation: (acc: Short, Short) -> Short
): Short 
inline fun IntArray.reduce(
    operation: (acc: Int, Int) -> Int
): Int 
inline fun LongArray.reduce(
    operation: (acc: Long, Long) -> Long
): Long 
inline fun FloatArray.reduce(
    operation: (acc: Float, Float) -> Float
): Float 
inline fun DoubleArray.reduce(
    operation: (acc: Double, Double) -> Double
): Double 
inline fun BooleanArray.reduce(
    operation: (acc: Boolean, Boolean) -> Boolean
): Boolean 
inline fun CharArray.reduce(
    operation: (acc: Char, Char) -> Char
): Char 
inline fun <S, T : S> Iterable<T>.reduce(
    operation: (acc: S, T) -> S
): S

تُراكِم الدالة reduce()‎ القيم بدءًا من العنصر الأول ثمَّ تطبّق العملية operation من اليسار إلى اليمين على القيمة المُتراكمة الراهنة وعلى العنصر التالي في المصفوفة أو المجموعة التي استُدعيت معها وتُعيد القيمة النهائية.

inline fun <S, T : S, K> Grouping<T, K>.reduce(
    operation: (key: K, accumulator: S, element: T) -> S
): Map<K, S>

بيئة التشغيل: Kotlin 1.1.

تُجمّع الدالة reduce()‎ القيم من المصدر Grouping بحسب المفاتيح (keys) ثمَّ تطبّق العملية operation على عناصر كل مجموعة (group) بشكل متتابع بدءًا بالعنصر الثاني من المجموعة (group)، إذ تُمرّر قيمة التراكم الراهنة والعنصر الراهن كوسيطين (arguments) ويخزّن الناتج في خريطة جديد. تعدُّ القيمة الأولية المُمرّرة إلى المراكم accumulator هي العنصر الأول في المجموعة (group).

تعيد الدالة reduce()‎ خريطةً تربط بين مفاتيح كل مجموعة (group) مع نتيجة تراكم عناصرها.

وجود الكلمة المفتاحية inline يدل على أنَّ هذه الدالة مباشرة (للمزيد من التفاصيل، راجع صفحة الدوال المباشرة (inline functions)). 

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

ارجع إلى فقرة البنية العامة لمعرفة القيمة المعادة.

أمثلة

استعمال الدالة ()reduce لتجميع أعداد موجودة في مصفوفة:

fun main(args: Array<String>) {
val array = arrayOf(1,2,3,4,5,6)

val acc = array.reduce { sum, element -> sum + element }
print(acc) // 21
}

انظر أيضًا

  • الدالة reduceRight()‎: تجمع بشكل تراكمي ناتج تطبيق عملية معيَّنة على قيمة كل عنصر من عناصر المصفوفة أو المجموعة (بدءًا من اليمين إلى اليسار) المستدعاة معها والقيمة التراكمية الحالية. 
  • الدالة reduceIndexed()‎: تُراكِم القيم بدءًا من العنصر الأول وتطبّق العملية operation من اليسار إلى اليمين على القيمة المُتراكمة الراهنة وعلى العنصر التالي من المصفوفة أو المجموعة التي استُدعيت عبرها وكذلك فهرسه. وتُعيد القيمة النهائية.
  • الدالة reduceRightIndexed()‎: تجمع الناتج التراكمي لتطبيق عملية معينة على قيمة كل عنصر من عناصر المصفوفة أو المجموعة (بدءًا من اليمين إلى اليسار) المستدعاة معها وفهرس ذلك العنصر والقيمة المجمَّعة الحالية.
  • الدالة groupBy()‎: تجمِّع عناصر المصفوفة أو المجموعة التي استُدعيت معها في مجموعات، إذ تطبق دالة محدَّدة على كل عنصر ثمَّ تعاد خريطة تحوي مجموعاتٍ مفتاحُ كلِّ واحدةٍ منها مرتبطٌ بقائمة من العناصر المقابلة.
  • الدالة fold()‎ تراكميًّا ناتج تطبيق عملية معينة على قيمة كل عنصر من عناصر الكائن المستدعى معها والقيمة التراكمية الحالية بالإضافة إلى قيمة أولية إن أعطيت، ويختلف سلوكها بحسب نوع الكائنات المستدعاة معها والمعاملات المُمرّرة إليها 

مصادر