الفرق بين المراجعتين ل"Kotlin/collections/reduce"
جميل-بيلوني (نقاش | مساهمات) ط (مراجعة وتدقيق.) |
|||
سطر 1: | سطر 1: | ||
− | <noinclude>{{DISPLAYTITLE: الدالة <code>reduce()</code> في | + | <noinclude>{{DISPLAYTITLE: الدالة <code>reduce()</code> في Kotlin}}</noinclude> |
− | + | تجمِّع الدالة <code>reduce()</code> قيم عناصر الكائن المستدعى معها وتطبق عملية معينة على القيمة المجمعة الحالية في كل مرة تجمَّع فيها قيم العناصر. | |
==البنية العامة== | ==البنية العامة== | ||
<syntaxhighlight lang="kotlin"> | <syntaxhighlight lang="kotlin"> | ||
سطر 34: | سطر 34: | ||
): S | ): S | ||
− | </syntaxhighlight>تُراكِم الدالة<code>reduce()</code> القيم بدءًا من العنصر الأول | + | </syntaxhighlight>تُراكِم الدالة <code>reduce()</code> القيم بدءًا من العنصر الأول ثمَّ تطبّق العملية <code>operation</code> من اليسار إلى اليمين على القيمة المُتراكمة الراهنة وعلى العنصر التالي في [[Kotlin/Array|المصفوفة]] أو [[Kotlin/collections|المجموعة]] التي استُدعيت معها وتُعيد القيمة النهائية.<syntaxhighlight lang="kotlin"> |
inline fun <S, T : S, K> Grouping<T, K>.reduce( | inline fun <S, T : S, K> Grouping<T, K>.reduce( | ||
operation: (key: K, accumulator: S, element: T) -> S | operation: (key: K, accumulator: S, element: T) -> S | ||
): Map<K, S> | ): Map<K, S> | ||
− | </syntaxhighlight>'''بيئة التشغيل: Kotlin 1.1 | + | </syntaxhighlight>'''بيئة التشغيل:''' Kotlin 1.1. |
− | تُجمّع الدالة<code>reduce()</code> القيم من المصدر <code>[[Kotlin/collections/Grouping|Grouping]]</code> | + | تُجمّع الدالة <code>reduce()</code> القيم من المصدر <code>[[Kotlin/collections/Grouping|Grouping]]</code> بحسب المفاتيح (keys) ثمَّ تطبّق العملية <code>operation</code> على عناصر كل مجموعة (group) بشكل متتابع بدءًا بالعنصر الثاني من المجموعة (group)، إذ تُمرّر قيمة التراكم الراهنة والعنصر الراهن كوسيطين (arguments) ويخزّن الناتج في خريطة جديد. تعدُّ القيمة الأولية المُمرّرة إلى المراكم <code>accumulator</code> هي العنصر الأول في المجموعة (group). |
− | تعيد الدالة<code>reduce()</code> | + | تعيد الدالة <code>reduce()</code> خريطةً تربط بين مفاتيح كل مجموعة (group) مع نتيجة تراكم عناصرها. |
− | + | وجود الكلمة المفتاحية <code>inline</code> يدل على أنَّ هذه الدالة مباشرة (للمزيد من التفاصيل، راجع صفحة [[Kotlin/inline functions|الدوال المباشرة (inline functions)]]). | |
− | + | ==القيم المعادة== | |
− | ==القيم | + | ارجع إلى فقرة [[Kotlin/collections/reduce#.D8.A7.D9.84.D8.A8.D9.86.D9.8A.D8.A9 .D8.A7.D9.84.D8.B9.D8.A7.D9.85.D8.A9|البنية العامة]] لمعرفة القيمة المعادة. |
− | |||
==أمثلة== | ==أمثلة== | ||
− | + | استعمال الدالة <code>()reduce</code> لتجميع أعداد موجودة في مصفوفة:<syntaxhighlight lang="kotlin"> | |
− | |||
fun main(args: Array<String>) { | fun main(args: Array<String>) { | ||
val array = arrayOf(1,2,3,4,5,6) | val array = arrayOf(1,2,3,4,5,6) | ||
سطر 59: | سطر 57: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
==انظر أيضًا== | ==انظر أيضًا== | ||
− | * <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/groupBy|groupBy()]]</code>: تجمِّع عناصر <nowiki/>[[Kotlin/Array|المصفوفة]] أو <nowiki/>[[Kotlin/collections|المجموعة]] التي استُدعيت معها في مجموعات، إذ تطبق دالة محدَّدة على كل عنصر ثمَّ تعاد خريطة تحوي مجموعاتٍ مفتاحُ كلِّ واحدةٍ منها مرتبطٌ بقائمة من العناصر المقابلة. | |
+ | *الدالة <code>[[Kotlin/collections/foldRight|foldRight()]]</code>: تجمع بشكل تراكمي ناتج تطبيق عملية معيَّنة على قيمة كل عنصر من عناصر المصفوفة أو المجموعة (بدءًا من اليمين إلى اليسار) المستدعاة معها والقيمة التراكمية الحالية بالإضافة إلى القيمة الأولية إن أعطيت. | ||
==مصادر== | ==مصادر== | ||
− | *[https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/reduce.html الدالة | + | *[https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/reduce.html صفحة الدالة reduce() في التوثيق الرسميّ للمكتبة القياسيّة في لغة Kotlin.] |
[[تصنيف:Kotlin]] | [[تصنيف:Kotlin]] | ||
[[تصنيف:Kotlin Functions]] | [[تصنيف:Kotlin Functions]] |
مراجعة 17:03، 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
}
انظر أيضًا
- الدالة
reduceIndexed()
: تُراكِم القيم بدءًا من العنصر الأول وتطبّق العمليةoperation
من اليسار إلى اليمين على القيمة المُتراكمة الراهنة وعلى العنصر التالي من المصفوفة أو المجموعة التي استُدعيت عبرها وكذلك فهرسه. وتُعيد القيمة النهائية. - الدالة
groupBy()
: تجمِّع عناصر المصفوفة أو المجموعة التي استُدعيت معها في مجموعات، إذ تطبق دالة محدَّدة على كل عنصر ثمَّ تعاد خريطة تحوي مجموعاتٍ مفتاحُ كلِّ واحدةٍ منها مرتبطٌ بقائمة من العناصر المقابلة. - الدالة
foldRight()
: تجمع بشكل تراكمي ناتج تطبيق عملية معيَّنة على قيمة كل عنصر من عناصر المصفوفة أو المجموعة (بدءًا من اليمين إلى اليسار) المستدعاة معها والقيمة التراكمية الحالية بالإضافة إلى القيمة الأولية إن أعطيت.