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

من موسوعة حسوب
أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE: الدالة <code>flatMapTo()‎</code> في لغة Kotlin}}</noinclude> تعيد الدالة<code>flatMapTo()‎</code> Kotlin/collecti...'
 
طلا ملخص تعديل
 
(8 مراجعات متوسطة بواسطة 3 مستخدمين غير معروضة)
سطر 1: سطر 1:
<noinclude>{{DISPLAYTITLE: الدالة <code>flatMapTo()‎</code> في لغة Kotlin}}</noinclude>
<noinclude>{{DISPLAYTITLE: الدالة <code>flatMapTo()‎</code> في Kotlin}}</noinclude>
تشبه الدالة <code>flatMapTo()‎</code> الدالة <code>[[Kotlin/collections/flatMap|flatMap()‎]]</code> تمامًا باستثناء أنها تضيف الناتج المعاد إلى كائن موجود مسبقًا بدلًا من إعادته فقط.
تعيد الدالة<code>flatMapTo()‎</code> [[Kotlin/collections/List|لائحة]] تضم ناتج تطبيق الدالة <code>transform()‎</code> المُمرّرة إليها على عناصر  [[Kotlin/Array|المصفوفة]] أو [[Kotlin/collections|المجموعة]]  التي استُدعيت عبرها، وفي حال استدعاء الدالة <code>flatMapTo()‎</code>  على [[Kotlin/collections/Map|قاموس]] فستعيد [[Kotlin/collections/List|لائحة]] تضم ناتج تطبيق الدالة <code>transform()‎</code> على مداخل (entries)  [[Kotlin/collections/Map|القاموس]].


==البنية العامة==
==البنية العامة==
يمكن استدعاء الدالة<code>flatMap()‎</code> على [[Kotlin/Array|المصفوفات]].<syntaxhighlight lang="kotlin">
يمكن استدعاء الدالة <code>flatMapTo()‎</code> مع [[Kotlin/Array|المصفوفات]]:<syntaxhighlight lang="kotlin">
inline fun <T, R> Array<out T>.flatMap(
inline fun <T, R, C : MutableCollection<in R>> Array<out T>.flatMapTo(
    destination: C,
     transform: (T) -> Iterable<R>
     transform: (T) -> Iterable<R>
): List<R>
): C
inline fun <R> ByteArray.flatMap(
inline fun <R, C : MutableCollection<in R>> ByteArray.flatMapTo(
    destination: C,
     transform: (Byte) -> Iterable<R>
     transform: (Byte) -> Iterable<R>
): List<R>
): C
inline fun <R> ShortArray.flatMap(
inline fun <R, C : MutableCollection<in R>> ShortArray.flatMapTo(
    destination: C,
     transform: (Short) -> Iterable<R>
     transform: (Short) -> Iterable<R>
): List<R>
): C
inline fun <R> IntArray.flatMap(
inline fun <R, C : MutableCollection<in R>> IntArray.flatMapTo(
    destination: C,
     transform: (Int) -> Iterable<R>
     transform: (Int) -> Iterable<R>
): List<R>
): C
inline fun <R> LongArray.flatMap(
inline fun <R, C : MutableCollection<in R>> LongArray.flatMapTo(
    destination: C,
     transform: (Long) -> Iterable<R>
     transform: (Long) -> Iterable<R>
): List<R>
): C
inline fun <R> FloatArray.flatMap(
inline fun <R, C : MutableCollection<in R>> FloatArray.flatMapTo(
    destination: C,
     transform: (Float) -> Iterable<R>
     transform: (Float) -> Iterable<R>
): List<R>
): C
inline fun <R> DoubleArray.flatMap(
inline fun <R, C : MutableCollection<in R>> DoubleArray.flatMapTo(
    destination: C,
     transform: (Double) -> Iterable<R>
     transform: (Double) -> Iterable<R>
): List<R>
): C
inline fun <R> BooleanArray.flatMap(
inline fun <R, C : MutableCollection<in R>> BooleanArray.flatMapTo(
    destination: C,
     transform: (Boolean) -> Iterable<R>
     transform: (Boolean) -> Iterable<R>
): List<R>
): C
inline fun <R> CharArray.flatMap(
inline fun <R, C : MutableCollection<in R>> CharArray.flatMapTo(
    destination: C,
     transform: (Char) -> Iterable<R>
     transform: (Char) -> Iterable<R>
): List<R>
): C


</syntaxhighlight>يمكن استدعاء الدالة<code>flatMap()‎</code> على [[Kotlin/Array|المجموعات]].<syntaxhighlight lang="kotlin">
</syntaxhighlight>ويمكن استدعاؤها مع [[Kotlin/collections|المجموعات]]:<syntaxhighlight lang="kotlin">
inline fun <T, R> Iterable<T>.flatMap(
inline fun <T, R, C : MutableCollection<in R>> Iterable<T>.flatMapTo(
    destination: C,
     transform: (T) -> Iterable<R>
     transform: (T) -> Iterable<R>
): List<R>
): C
</syntaxhighlight>يمكن استدعاء الدالة<code>flatMap()‎</code> على [[Kotlin/Array|القواميس]].<syntaxhighlight lang="kotlin">
</syntaxhighlight>ويمكن استدعاؤها مع [[Kotlin/collections/Map|الخرائط]].<syntaxhighlight lang="kotlin">
inline fun <K, V, R> Map<out K, V>.flatMap(
inline fun <K, V, R, C : MutableCollection<in R>> Map<out K, V>.flatMapTo(
    destination: C,
     transform: (Entry<K, V>) -> Iterable<R>
     transform: (Entry<K, V>) -> Iterable<R>
): List<R>
): C
</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>destination</code> ===
مجموعة قابلة للتغيير (MutableCollection‎) تمثل الوجهة التي سيضاف إليها الناتج.
 
=== <code>transform</code> ===
دالةٌ تطبق على كل عنصر من عناصر <nowiki/>[[Kotlin/Array|المصفوفة]]، أو <nowiki/>[[Kotlin/collections|المجموعة]]، أو [[Kotlin/collections/Map|الخريطة]] المعطاة، وتعيد قيمة معينة تحل مكانه.
 
==القيم المعادة==
يعاد المعامل <code>destination</code> بعد إضافة ناتج تطبيق الدالة <code>transform‎</code> على كل عنصر من عناصر <nowiki/>[[Kotlin/Array|المصفوفة]]، أو <nowiki/>[[Kotlin/collections|المجموعة]]، أو [[Kotlin/collections/Map|الخريطة]] المعطاة.
==أمثلة==
==أمثلة==
===استخدام الدالة <code>()flatMapTo</code> مع القواميس===
تعرف الشيفرة الآتية [[Kotlin/collections/List|قائمة]] فارغة <nowiki/>باسم <code>list</code> باستخدام الدالة <code>()arrayListOf<Int></code>، ثم تستدعي الدالة <code>()flatMapTo</code>  مع [[Kotlin/collections/List|قائمة]] مكونة من ثلاثة أعداد وتضيف الناتج إلى [[Kotlin/collections/List|القائمة]] <code>list</code><nowiki/>:<syntaxhighlight lang="kotlin">
تعرف الشيفرة الآتية <nowiki/>[[Kotlin/Array|قاموسًا]] باسم <code>map</code>مكونة من ثلاثة أزواج باستخدام الدالة <code>()flatMapTo</code>، ثم تُعرّف الدالة <code>()func</code>، ثم تستخدم الدالة <code>()flatMap</code> لإنشاء لائحة تحتوي ناتج تطبيق الدالة <code>()func</code> على مداخل<nowiki/>[[Kotlin/Array|القاموس]] <code>map</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 list = arrayListOf<Int>()
val func : (Int) -> Array<Int> = { arrayOf(it)}
    listOf(1, 2, 3).flatMapTo(list) { listOf(it, it + 1) }
 
    print(list) // [1, 2, 2, 3, 3, 4]
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/flatMap|flatMap()]]</code>‎: تعيد قائمةً تضم ناتج تطبيق الدالة المُمرّرة إليها على عناصر <nowiki/>[[Kotlin/Array|المصفوفة]]، أو <nowiki/>[[Kotlin/collections|المجموعة]]، أو الخريطة التي استُدعيت معها.
*الدالة <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-to.html صفحة الدالة flatMapTo()‎ في التوثيق الرسميّ للمكتبة القياسيّة في لغة Kotlin.]
*[https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/flat-map.html الدالة  flatMapTo()‎ في التوثيق الرسميّ للمكتبة القياسيّة في لغة Kotlin.]
 
*
[[تصنيف:Kotlin]]
[[تصنيف:Kotlin]]
[[تصنيف:Kotlin Functions]]
[[تصنيف:Kotlin Function]]
[[تصنيف:Kotlin Collection]]

المراجعة الحالية بتاريخ 10:21، 3 سبتمبر 2018

تشبه الدالة flatMapTo()‎ الدالة flatMap()‎ تمامًا باستثناء أنها تضيف الناتج المعاد إلى كائن موجود مسبقًا بدلًا من إعادته فقط.

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

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

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

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

inline fun <T, R, C : MutableCollection<in R>> Iterable<T>.flatMapTo(
    destination: C, 
    transform: (T) -> Iterable<R>
): C

ويمكن استدعاؤها مع الخرائط.

inline fun <K, V, R, C : MutableCollection<in R>> Map<out K, V>.flatMapTo(
    destination: C, 
    transform: (Entry<K, V>) -> Iterable<R>
): C

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

المعاملات

destination

مجموعة قابلة للتغيير (MutableCollection‎) تمثل الوجهة التي سيضاف إليها الناتج.

transform

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

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

يعاد المعامل destination بعد إضافة ناتج تطبيق الدالة transform‎ على كل عنصر من عناصر المصفوفة، أو المجموعة، أو الخريطة المعطاة.

أمثلة

تعرف الشيفرة الآتية قائمة فارغة باسم list باستخدام الدالة ()arrayListOf<Int>‎، ثم تستدعي الدالة ()flatMapTo  مع قائمة مكونة من ثلاثة أعداد وتضيف الناتج إلى القائمة list:

fun main(args: Array<String>) {
    val list = arrayListOf<Int>()
    listOf(1, 2, 3).flatMapTo(list) { listOf(it, it + 1) }
    print(list) // [1, 2, 2, 3, 3, 4]
}

انظر أيضًا

مصادر