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

من موسوعة حسوب
لا ملخص تعديل
ط مراجعة وتدقيق.
سطر 1: سطر 1:
<noinclude>{{DISPLAYTITLE: الدالة <code>flatMap()‎</code> في لغة Kotlin}}</noinclude>
<noinclude>{{DISPLAYTITLE: الدالة <code>flatMap()‎</code> في Kotlin}}</noinclude>
   
   
تعيد الدالة<code>flatMap()‎</code> [[Kotlin/collections/List|لائحة]] تضم ناتج تطبيق الدالة <code>transform()‎</code> المُمرّرة إليها على عناصر [[Kotlin/Array|المصفوفة]] أو [[Kotlin/collections|المجموعة]] التي استُدعيت عبرها، وفي حال استدعاء الدالة <code>flatMap()‎</code>  على [[Kotlin/collections/Map|قاموس]] فستعيد [[Kotlin/collections/List|لائحة]] تضم ناتج تطبيق الدالة <code>transform()‎</code> على مداخل (entries)  [[Kotlin/collections/Map|القاموس]].
تعيد الدالة <code>flatMap()‎</code> قائمةً تضم ناتج تطبيق الدالة <code>transform()‎</code> المُمرّرة إليها على عناصر [[Kotlin/Array|المصفوفة]]، أو [[Kotlin/collections|المجموعة]]، أو الخريطة التي استُدعيت معها.
 
==البنية العامة==
==البنية العامة==
يمكن استدعاء الدالة<code>flatMap()‎</code> على [[Kotlin/Array|المصفوفات]].<syntaxhighlight lang="kotlin">
يمكن استدعاء الدالة <code>flatMap()‎</code> مع [[Kotlin/Array|المصفوفات]]:<syntaxhighlight lang="kotlin">
inline fun <T, R> Array<out T>.flatMap(
inline fun <T, R> Array<out T>.flatMap(
     transform: (T) -> Iterable<R>
     transform: (T) -> Iterable<R>
سطر 33: سطر 32:
): List<R>  
): List<R>  


</syntaxhighlight>يمكن استدعاء الدالة<code>flatMap()‎</code> على [[Kotlin/Array|المجموعات]].<syntaxhighlight lang="kotlin">
</syntaxhighlight>ويمكن استدعاؤها مع المجموعات:<syntaxhighlight lang="kotlin">
inline fun <T, R> Iterable<T>.flatMap(
inline fun <T, R> Iterable<T>.flatMap(
     transform: (T) -> Iterable<R>
     transform: (T) -> Iterable<R>
): List<R>
): List<R>
</syntaxhighlight>يمكن استدعاء الدالة<code>flatMap()‎</code> على [[Kotlin/Array|القواميس]].<syntaxhighlight lang="kotlin">
</syntaxhighlight>ويمكن استدعاؤها أيضًا مع الخرائط:<syntaxhighlight lang="kotlin">
inline fun <K, V, R> Map<out K, V>.flatMap(
inline fun <K, V, R> Map<out K, V>.flatMap(
     transform: (Entry<K, V>) -> Iterable<R>
     transform: (Entry<K, V>) -> Iterable<R>
): List<R>
): List<R>
</syntaxhighlight>يُلاحَظ وجود الكلمة المفتاحية <code>inline</code> للدلالة على أن هذه الدالة مباشرة، وللمزيد من التفاصيل راجع <nowiki/>[[Kotlin/inline functions|توثيق الدوال المباشرة (inline functions)]].
</syntaxhighlight>وجود الكلمة المفتاحية <code>inline</code> يدل على أنَّ هذه الدالة مباشرة (للمزيد من التفاصيل، راجع صفحة <nowiki/>[[Kotlin/inline functions|الدوال المباشرة (inline functions)]]).
==القيم المٌعادة==
==القيم المٌعادة==
[[Kotlin/collections/List|لائحة]] تضم ناتج تطبيق الدالة <code>transform()‎</code> المُمرّرة إليها على عناصر [[Kotlin/Array|المصفوفة]] أو [[Kotlin/collections|المجموعة]] التي استُدعيت عبرها، وفي حال استدعاء الدالة <code>flatMap()‎</code>  على [[Kotlin/collections/Map|قاموس]] فستعيد [[Kotlin/collections/List|لائحة]] تضم ناتج تطبيق الدالة <code>transform()‎</code> على مداخل (entries)  [[Kotlin/collections/Map|القاموس]].
تُعاد قائمةٌ تضم ناتج تطبيق الدالة <code>transform()‎</code> المعطاة على كل عنصر من عناصر [[Kotlin/Array|المصفوفة]] أو [[Kotlin/collections|المجموعة]] أو الخريطة المعطاة أيضًا.
==أمثلة==
==أمثلة==
===استخدام الدالة <code>()flatMap</code> مع القواميس===
===استخدام الدالة <code>()flatMap</code> مع الخرائط===
تعرف الشيفرة الآتية <nowiki/>[[Kotlin/Array|قاموسًا]] باسم <code>map</code>مكونة من ثلاثة أزواج باستخدام الدالة <code>()mapOf</code>، ثم تُعرّف الدالة <code>()func</code>، ثم تستخدم الدالة <code>()flatMap</code> لإنشاء لائحة تحتوي ناتج تطبيق الدالة <code>()func</code> على مداخل<nowiki/>[[Kotlin/Array|القاموس]] <code>map</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>) {
val map = mapOf("x" to 2, "y" to 6, "z" to 5)
    val map = mapOf("x" to 2, "y" to 6, "z" to 5)
val func : (Int) -> Array<Int> = { arrayOf(it)}
    val func: (Int) -> Array<Int> = { arrayOf(it)}


println(map.flatMap { (a, b) -> listOf(a) }) // [x, y, z]
    println(map.flatMap { (a, b) -> listOf(a) }) // [x, y, z]
}
}
</syntaxhighlight>
</syntaxhighlight>
===انظر أيضًا===
==انظر أيضًا==
*<code>[[Kotlin/collections/first|flatMapTo()]]</code>‎: تضيف إلى [[Kotlin/collections/List|اللائحة]] المُمرّرة إليها ناتج تطبيق الدالة <code>transform()‎</code> المُمرّرة إليها على عناصر [[Kotlin/Array|المصفوفة]] أو [[Kotlin/collections|المجموعة]] أو [[Kotlin/collections/Map|القاموس]].
*الدالة <code>[[Kotlin/collections/first|flatMapTo()]]</code>‎: تشبه هذه الدالة في جميع النواحي باستثناء أنَّها تسند الناتج الذي تعيده إلى المعامل الممرَّر إليها. 
*الدالة <code>[[Kotlin/collections/flatten|flatten()‎]]</code>: تعيد [[Kotlin/collections/List|قائمةً]] واحدة فقط تحوي جميع عناصر [[Kotlin/Array|المصفوفات]] أو [[Kotlin/collections|المجموعات]] المتشعبة ضمن [[Kotlin/Array|المصفوفة]] أو [[Kotlin/collections|المجموعة]] التي استُدعيت معها.
==مصادر==
==مصادر==
<span> </span>
*[https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/flat-map.html صفحة الدالة flatMap()‎ في التوثيق الرسميّ للمكتبة القياسيّة في لغة Kotlin.]
*[https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/flat-map.html الدالة  flatMap()‎ في التوثيق الرسميّ للمكتبة القياسيّة في لغة Kotlin.]
 
*
[[تصنيف:Kotlin]]
[[تصنيف:Kotlin]]
[[تصنيف:Kotlin Functions]]
[[تصنيف:Kotlin Functions]]

مراجعة 12:20، 23 يوليو 2018


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

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

يمكن استدعاء الدالة 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()‎ المعطاة على كل عنصر من عناصر المصفوفة أو المجموعة أو الخريطة المعطاة أيضًا.

أمثلة

استخدام الدالة ()flatMap مع الخرائط

تعرِّف الشيفرة الآتية خريطةً باسم 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]
}

انظر أيضًا

مصادر