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

من موسوعة حسوب
اذهب إلى التنقل اذهب إلى البحث
(أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE: الدالة <code>flatMap()‎</code> في لغة Kotlin}}</noinclude> تعيد الدالة<code>flatMap()‎</code> العنصر الأول...')
 
سطر 1: سطر 1:
 
<noinclude>{{DISPLAYTITLE: الدالة <code>flatMap()‎</code> في لغة Kotlin}}</noinclude>
 
<noinclude>{{DISPLAYTITLE: الدالة <code>flatMap()‎</code> في لغة Kotlin}}</noinclude>
تعيد الدالة<code>flatMap()‎</code> العنصر الأول من [[Kotlin/Array|المصفوفة]] أو [[Kotlin/collections|المجموعة]] التي استُدعيت عبرها، وفي حال تمرير دالة منطقية كمعامل فستعيد أول عنصر يحقق تلك الدالة.  
+
 +
تعيد الدالة<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|القاموس]].
  
إن كانت  [[Kotlin/Array|المصفوفة]] أو [[Kotlin/collections|المجموعة]] التي استُدعيت  الدالة<code>first()‎</code>عبرها فارغة أو لم يكن هناك أي عنصر يحقق الدالة المنطقية الممررة إليها فستعيد الدالة <code>first()‎</code> القيمة المعدومة <code>null</code>.
 
 
==البنية العامة==
 
==البنية العامة==
في حال استدعاء الدالة<code>firstOrNull()‎</code> بدون معامل فستعيد العنصر الأول.<syntaxhighlight lang="kotlin">
+
يمكن استدعاء الدالة<code>flatMap()‎</code> على [[Kotlin/Array|المصفوفات]].<syntaxhighlight lang="kotlin">
fun <T> Array<out T>.firstOrNull(): T?
+
inline fun <T, R> Array<out T>.flatMap(
fun ByteArray.firstOrNull(): Byte?
+
    transform: (T) -> Iterable<R>
fun ShortArray.firstOrNull(): Short?
+
): List<R>
fun IntArray.firstOrNull(): Int?
+
inline fun <R> ByteArray.flatMap(
fun LongArray.firstOrNull(): Long?
+
    transform: (Byte) -> Iterable<R>
fun FloatArray.firstOrNull(): Float?
+
): List<R>
fun DoubleArray.firstOrNull(): Double?
+
inline fun <R> ShortArray.flatMap(
fun BooleanArray.firstOrNull(): Boolean?
+
    transform: (Short) -> Iterable<R>
fun CharArray.firstOrNull(): Char?
+
): 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>
  
</syntaxhighlight>في حال استدعاء الدالة<code>firstOrNull()‎</code> مع دالة منطقية كمعامل فستعيد العنصر الأول الذي يحقق تلك الدالة.<syntaxhighlight lang="kotlin">
+
</syntaxhighlight>يمكن استدعاء الدالة<code>flatMap()‎</code> على [[Kotlin/Array|المجموعات]].<syntaxhighlight lang="kotlin">
inline fun <T> Array<out T>.firstOrNull(
+
inline fun <T, R> Iterable<T>.flatMap(
     predicate: (T) -> Boolean
+
     transform: (T) -> Iterable<R>
): T?
+
): List<R>
inline fun ByteArray.firstOrNull(
+
</syntaxhighlight>يمكن استدعاء الدالة<code>flatMap()‎</code> على [[Kotlin/Array|القواميس]].<syntaxhighlight lang="kotlin">
    predicate: (Byte) -> Boolean
+
inline fun <K, V, R> Map<out K, V>.flatMap(
): Byte?
+
    transform: (Entry<K, V>) -> Iterable<R>
inline fun ShortArray.firstOrNull(
+
): List<R>
    predicate: (Short) -> Boolean
 
): Short?
 
inline fun IntArray.firstOrNull(
 
    predicate: (Int) -> Boolean
 
): Int?
 
inline fun LongArray.firstOrNull(
 
    predicate: (Long) -> Boolean
 
): Long?
 
inline fun FloatArray.firstOrNull(
 
    predicate: (Float) -> Boolean
 
): Float?
 
inline fun DoubleArray.firstOrNull(
 
    predicate: (Double) -> Boolean
 
): Double?
 
inline fun BooleanArray.firstOrNull(
 
    predicate: (Boolean) -> Boolean
 
): Boolean?
 
inline fun CharArray.firstOrNull(
 
    predicate: (Char) -> Boolean
 
): Char?
 
inline fun <T> Iterable<T>.firstOrNull(
 
    predicate: (T) -> Boolean
 
): T?
 
 
 
</syntaxhighlight>في حال استدعاء الدالة<code>firstOrNull()‎</code> بدون معامل على<nowiki/>[[Kotlin/collections|مجموعة]] أو [[Kotlin/collections/List|لائحة]] فستعيد العنصر الأول:<syntaxhighlight lang="kotlin">
 
fun <T> Iterable<T>.firstOrNull(): T?
 
fun <T> List<T>.firstOrNull(): T?
 
 
</syntaxhighlight>يُلاحَظ وجود الكلمة المفتاحية <code>inline</code> للدلالة على أن هذه الدالة مباشرة، وللمزيد من التفاصيل راجع <nowiki/>[[Kotlin/inline functions|توثيق الدوال المباشرة (inline functions)]].
 
</syntaxhighlight>يُلاحَظ وجود الكلمة المفتاحية <code>inline</code> للدلالة على أن هذه الدالة مباشرة، وللمزيد من التفاصيل راجع <nowiki/>[[Kotlin/inline functions|توثيق الدوال المباشرة (inline functions)]].
 
==القيم المٌعادة==
 
==القيم المٌعادة==
العنصر الأول من [[Kotlin/Array|المصفوفة]] أو [[Kotlin/collections|المجموعة]] التي استُدعيت عبرها، وفي حال تمرير دالة منطقية كمعامل فستعيد أول عنصر يحقق تلك الدالة. إن كانت [[Kotlin/Array|المصفوفة]] أو [[Kotlin/collections|المجموعة]] التي استُدعيت  الدالة<code>first()‎</code>عبرها فارغة أو لم يكن هناك أي عنصر يحقق الدالة المنطقية الممررة إليها فستعيد الدالة <code>first()‎</code> القيمة المعدومة <code>null</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>()flatMap</code> مع القواميس===
تعرف الشيفرة الآتية <nowiki/>[[Kotlin/Array|مصفوفة]] باسم <code>array</code>مكونة من ستة أعداد باستخدام الدالة <code>()arrayOf</code>، ثم تستخدم الدالة <code>()firstOrNull</code> لإيجاد العنصر  الأول في [[Kotlin/Array|المصفوفة]]<code>array</code>، ثم تطبع الناتج:<syntaxhighlight lang="kotlin">
+
تعرف الشيفرة الآتية <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">
 
fun main(args: Array<String>) {
 
fun main(args: Array<String>) {
val array = arrayOf(9, 2, 3, 5,0,6)
+
val map = mapOf("x" to 2, "y" to 6, "z" to 5)
 +
val func : (Int) -> Array<Int> = { arrayOf(it)}
  
println(array.firstOrNull()) // 9
+
println(map.flatMap { (a, b) -> listOf(a) }) // [x, y, z]
 
}
 
}
 
</syntaxhighlight>
 
</syntaxhighlight>
===استخدام الدالة <code>()firstOrNull</code> مع المصفوفات: الحالة الثانية===
+
===انظر أيضًا===
تعرف الشيفرة الآتية <nowiki/>[[Kotlin/Array|مصفوفة]] باسم <code>array</code>مكونة من ستة أعداد باستخدام الدالة <code>()arrayOf</code>، ثم تُعرّف الدالة المنطقية <code>()predicate</code> التي تحدد ما إذا كان العدد المُمرّر إليها أصغر من <code>0</code> ، ثم تستخدم الدالة <code>()firstOrNull</code> لإيجاد العنصر الأول في [[Kotlin/Array|المصفوفة]]<code>array</code> الذي يحقق الدالة <code>()predicate</code>،  ولما كانت كل عناصر  <code>array</code> لا تحقق هذه الدالة فستعيد <code>null</code>، ثم تطبع الناتج:<syntaxhighlight lang="kotlin">
+
*<code>[[Kotlin/collections/first|flatMapTo()]]</code>‎: تضيف إلى [[Kotlin/collections/List|اللائحة]] المُمرّرة إليها ناتج تطبيق الدالة <code>transform()</code> المُمرّرة إليها على عناصر  [[Kotlin/Array|المصفوفة]] أو [[Kotlin/collections|المجموعة]] أو [[Kotlin/collections/Map|القاموس]].
fun main(args: Array<String>) {
+
==مصادر==
val array = arrayOf(9, 2, 3, 8, 5,6)
+
<span> </span>
val predicate  : (Int) -> Boolean = { it < 0 }
+
*[https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/flat-map.html الدالة  flatMap()‎ في التوثيق الرسميّ للمكتبة القياسيّة في لغة Kotlin.]
  
println(array.firstOrNull(predicate)) // null
+
*
}
 
</syntaxhighlight>
 
==انظر أيضًا==
 
*<code>[[Kotlin/collections/first|first()]]</code>‎: تعيد العنصر الأول من <nowiki/>[[Kotlin/Array|المصفوفة]] أو <nowiki/>[[Kotlin/collections|المجموعة]] التي استُدعيت عبرها، وفي حال تمرير دالة منطقية كمعامل فستعيد أول عنصر يحقق تلك الدالة.
 
*<code>[[Kotlin/collections/find|find()]]</code>‎: تعيد العنصر الأول من [[Kotlin/Array|المصفوفة]] أو [[Kotlin/collections|المجموعة]] التي استُدعيت عبرها والذي يحقق الشرط المنطقي <code>predicate</code> المُمرّر إليها. وإن لم يكن هناك  أي عنصر يحقق ذلك فستعيد <code>null.</code>
 
*<code>[[Kotlin/collections/findLast|findLast()]]</code>‎: تعيد العنصر الأخير من [[Kotlin/Array|المصفوفة]] أو [[Kotlin/collections|المجموعة]] التي استُدعيت عبرها والذي يحقق الشرط المنطقي <code>predicate</code> المُمرّر إليها. وإن لم يكن هناك  أي عنصر يحقق ذلك فستعيد <code>null.</code>
 
==مصادر==
 
*[https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/first-or-null.html الدالة  flatMap()‎ في التوثيق الرسميّ للمكتبة القياسيّة في لغة Kotlin.]
 
 
[[تصنيف:Kotlin]]
 
[[تصنيف:Kotlin]]
 
[[تصنيف:Kotlin Functions]]
 
[[تصنيف:Kotlin Functions]]

مراجعة 12:32، 16 مايو 2018


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

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

يمكن استدعاء الدالة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>

يمكن استدعاء الدالةflatMap()‎ على المجموعات.

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

يمكن استدعاء الدالةflatMap()‎ على القواميس.

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

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

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

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

أمثلة

استخدام الدالة ()flatMap مع القواميس

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

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]
}

انظر أيضًا

مصادر