الفرق بين المراجعتين ل"Kotlin/collections/flatMap"

من موسوعة حسوب
اذهب إلى التنقل اذهب إلى البحث
ط (استبدال النص - 'Kotlin Functions' ب'Kotlin Function')
ط
 
(مراجعتان متوسطتان بواسطة نفس المستخدم غير معروضتين)
سطر 1: سطر 1:
 
<noinclude>{{DISPLAYTITLE: الدالة <code>flatMap()‎</code> في Kotlin}}</noinclude>
 
<noinclude>{{DISPLAYTITLE: الدالة <code>flatMap()‎</code> في Kotlin}}</noinclude>
تعيد الدالة <code>flatMap()‎</code> قائمةً تضم ناتج تطبيق الدالة <code>transform()‎</code> المُمرّرة إليها على عناصر [[Kotlin/Array|المصفوفة]]، أو [[Kotlin/collections|المجموعة]]، أو الخريطة التي استُدعيت معها.
+
تعيد الدالة <code>flatMap()‎</code> قائمةً تضم ناتج تطبيق الدالة المُمرّرة إليها على عناصر [[Kotlin/Array|المصفوفة]]، أو [[Kotlin/collections|المجموعة]]، أو الخريطة التي استُدعيت معها.
 
==البنية العامة==
 
==البنية العامة==
 
يمكن استدعاء الدالة <code>flatMap()‎</code> مع [[Kotlin/Array|المصفوفات]]:<syntaxhighlight lang="kotlin">
 
يمكن استدعاء الدالة <code>flatMap()‎</code> مع [[Kotlin/Array|المصفوفات]]:<syntaxhighlight lang="kotlin">
سطر 40: سطر 40:
 
): List<R>
 
): List<R>
 
</syntaxhighlight>وجود الكلمة المفتاحية <code>inline</code> يدل على أنَّ هذه الدالة مباشرة (للمزيد من التفاصيل، راجع صفحة <nowiki/>[[Kotlin/inline functions|الدوال المباشرة (inline functions)]]).
 
</syntaxhighlight>وجود الكلمة المفتاحية <code>inline</code> يدل على أنَّ هذه الدالة مباشرة (للمزيد من التفاصيل، راجع صفحة <nowiki/>[[Kotlin/inline functions|الدوال المباشرة (inline functions)]]).
 +
 +
== المعاملات ==
 +
 +
=== <code>transform</code> ===
 +
دالةٌ تطبق على كل عنصر من عناصر [[Kotlin/Array|المصفوفة]]، أو [[Kotlin/collections|المجموعة]]، أو الخريطة المعطاة، وتعيد قيمة معينة تحل مكانه.
 +
 
==القيم المعادة==
 
==القيم المعادة==
تُعاد قائمةٌ تضم ناتج تطبيق الدالة <code>transform()‎</code> المعطاة على كل عنصر من عناصر [[Kotlin/Array|المصفوفة]] أو [[Kotlin/collections|المجموعة]] أو الخريطة المعطاة أيضًا.
+
تُعاد قائمةٌ تضم ناتج تطبيق الدالة <code>transform‎</code> المعطاة على كل عنصر من عناصر [[Kotlin/Array|المصفوفة]] أو [[Kotlin/collections|المجموعة]] أو الخريطة المعطاة أيضًا.
 
==أمثلة==
 
==أمثلة==
===استخدام الدالة <code>()flatMap</code> مع الخرائط===
 
 
تعرِّف الشيفرة الآتية خريطةً باسم <code>map</code> باستخدام الدالة <code>()mapOf</code>، ثمَّ تستخدم الدالة <code>()flatMap</code> لإنشاء قائمة تحوي ناتج تطبيق الدالة <code>()func</code> المعرَّفة مسبقًا على أزواج تلك الخريطة:<syntaxhighlight lang="kotlin">
 
تعرِّف الشيفرة الآتية خريطةً باسم <code>map</code> باستخدام الدالة <code>()mapOf</code>، ثمَّ تستخدم الدالة <code>()flatMap</code> لإنشاء قائمة تحوي ناتج تطبيق الدالة <code>()func</code> المعرَّفة مسبقًا على أزواج تلك الخريطة:<syntaxhighlight lang="kotlin">
 
fun main(args: Array<String>) {
 
fun main(args: Array<String>) {
سطر 53: سطر 58:
 
</syntaxhighlight>
 
</syntaxhighlight>
 
==انظر أيضًا==
 
==انظر أيضًا==
*الدالة <code>[[Kotlin/collections/first|flatMapTo()]]</code>‎: تشبه هذه الدالة في جميع النواحي باستثناء أنَّها تسند الناتج الذي تعيده إلى المعامل الممرَّر إليها. 
+
*الدالة <code>[[Kotlin/collections/flatMapTo|flatMapTo()]]</code>‎: تشبه هذه الدالة في جميع النواحي باستثناء أنَّها تسند الناتج الذي تعيده إلى المعامل الممرَّر إليها. 
 
*الدالة <code>[[Kotlin/collections/flatten|flatten()‎]]</code>: تعيد [[Kotlin/collections/List|قائمةً]] واحدة فقط تحوي جميع عناصر [[Kotlin/Array|المصفوفات]] أو [[Kotlin/collections|المجموعات]] المتشعبة ضمن [[Kotlin/Array|المصفوفة]] أو [[Kotlin/collections|المجموعة]] التي استُدعيت معها.
 
*الدالة <code>[[Kotlin/collections/flatten|flatten()‎]]</code>: تعيد [[Kotlin/collections/List|قائمةً]] واحدة فقط تحوي جميع عناصر [[Kotlin/Array|المصفوفات]] أو [[Kotlin/collections|المجموعات]] المتشعبة ضمن [[Kotlin/Array|المصفوفة]] أو [[Kotlin/collections|المجموعة]] التي استُدعيت معها.
 
==مصادر==
 
==مصادر==
سطر 59: سطر 64:
 
[[تصنيف:Kotlin]]
 
[[تصنيف:Kotlin]]
 
[[تصنيف:Kotlin Function]]
 
[[تصنيف:Kotlin Function]]
 +
[[تصنيف:Kotlin Collection]]

المراجعة الحالية بتاريخ 08:05، 8 سبتمبر 2018

تعيد الدالة flatMap()‎ قائمةً تضم ناتج تطبيق الدالة المُمرّرة إليها على عناصر المصفوفة، أو المجموعة، أو الخريطة التي استُدعيت معها.

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

يمكن استدعاء الدالة flatMap()‎ مع المصفوفات:

inline fun <T, R> Array<out T>.flatMap(
    transform: (T) -> Iterable<R>
): List<R> 
inline fun <R> ByteArray.flatMap(
    transform: (Byte) -> Iterable<R>
): List<R> 
inline fun <R> ShortArray.flatMap(
    transform: (Short) -> Iterable<R>
): List<R> 
inline fun <R> IntArray.flatMap(
    transform: (Int) -> Iterable<R>
): List<R> 
inline fun <R> LongArray.flatMap(
    transform: (Long) -> Iterable<R>
): List<R> 
inline fun <R> FloatArray.flatMap(
    transform: (Float) -> Iterable<R>
): List<R> 
inline fun <R> DoubleArray.flatMap(
    transform: (Double) -> Iterable<R>
): List<R> 
inline fun <R> BooleanArray.flatMap(
    transform: (Boolean) -> Iterable<R>
): List<R> 
inline fun <R> CharArray.flatMap(
    transform: (Char) -> Iterable<R>
): List<R>

ويمكن استدعاؤها مع المجموعات:

inline fun <T, R> Iterable<T>.flatMap(
    transform: (T) -> Iterable<R>
): List<R>

ويمكن استدعاؤها أيضًا مع الخرائط:

inline fun <K, V, R> Map<out K, V>.flatMap(
    transform: (Entry<K, V>) -> Iterable<R>
): List<R>

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

المعاملات

transform

دالةٌ تطبق على كل عنصر من عناصر المصفوفة، أو المجموعة، أو الخريطة المعطاة، وتعيد قيمة معينة تحل مكانه.

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

تُعاد قائمةٌ تضم ناتج تطبيق الدالة transform‎ المعطاة على كل عنصر من عناصر المصفوفة أو المجموعة أو الخريطة المعطاة أيضًا.

أمثلة

تعرِّف الشيفرة الآتية خريطةً باسم map باستخدام الدالة ()mapOf، ثمَّ تستخدم الدالة ()flatMap لإنشاء قائمة تحوي ناتج تطبيق الدالة ()func المعرَّفة مسبقًا على أزواج تلك الخريطة:

fun main(args: Array<String>) {
    val map = mapOf("x" to 2, "y" to 6, "z" to 5)
    val func: (Int) -> Array<Int> = { arrayOf(it)}

    println(map.flatMap { (a, b) -> listOf(a) }) // [x, y, z]
}

انظر أيضًا

مصادر