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

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


==البنية العامة==
</syntaxhighlight>ويمكن استدعاؤها مع [[Kotlin/Array|المجموعات]]:<syntaxhighlight lang="kotlin">
يمكن استدعاء الدالة<code>flatMapTo()‎</code> على [[Kotlin/Array|المصفوفات]].<syntaxhighlight lang="kotlin">
fun <T> Iterable<Iterable<T>>.flatten(): List<T>  
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


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

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


تعيد الدالة flatten()‎ قائمةً واحدة فقط تحوي جميع عناصر المصفوفات أو المجموعات المتشعبة ضمن المصفوفة أو المجموعة التي استُدعيت معها.

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

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

fun <T> Array<out Array<out T>>.flatten(): List<T>

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

fun <T> Iterable<Iterable<T>>.flatten(): List<T>

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

تُعاد قائمة واحدة تحوي جميع عناصر المصفوفات أو المجموعات المتشعبة ضمن المصفوفة أو المجموعة المعطاة.

أمثلة

استخدام الدالة ()flatten مع المصفوفات

تعرِّف الشيفرة الآتية مصفوفة باسم deepArray باستخدام الدالة ()arrayOf، ثمَّ تستخدم الدالة ()flatten لإنشاء قائمة تضم جميع عناصر المصفوفات المتشعبة ضمن تلك المصفوفة:

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

    println(deepArray.flatten()) // [1, 2, 3, 4, 5, 6]
}

استخدام الدالة ()flatten مع اللوائح

تعرِّف الشيفرة الآتية قائمة باسم deepList باستخدام الدالة ()listOf، ثمَّ تستخدم الدالة ()flatten لإنشاء قائمة تضم جميع عناصر القوائم المتشعبة ضمن تلك القائمة:

fun main(args: Array<String>) {
    val deepList = listOf(listOf(1), listOf(2, 3), listOf(4, 5, 6))
    println(deepList.flatten()) // [1, 2, 3, 4, 5, 6]
}

انظر أيضًا

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

مصادر