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

من موسوعة حسوب
اذهب إلى التنقل اذهب إلى البحث
(أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE: الدالة <code>partition()‎</code> في لغة Kotlin}}</noinclude> تعيد الدالة<code>partition()‎</code> أصغر عنصر...')
 
سطر 1: سطر 1:
 
<noinclude>{{DISPLAYTITLE: الدالة <code>partition()‎</code> في لغة Kotlin}}</noinclude>
 
<noinclude>{{DISPLAYTITLE: الدالة <code>partition()‎</code> في لغة Kotlin}}</noinclude>
تعيد الدالة<code>partition()‎</code> أصغر عنصر في [[Kotlin/Array|المصفوفة]] أو [[Kotlin/collections|المجموعة]]  التي استُدعيت عبرها، أو <code>null</code> إن كانت فارغة.
+
تُقسّم الدالةُ<code>partition()‎</code>  [[Kotlin/Array|المصفوفة]] أو [[Kotlin/collections|المجموعة]]  التي استُدعيت عبرها إلى زوج مكوّن من [[Kotlin/List|لائحتين]]، [[Kotlin/List|اللائحة]] الأولى تضم العناصر التي تحقق الشرط المنطقي المُمرّر <code>predicate</code> (أي تعيد <code>true</code>)، بينما تضم الثانية العناصر الأخرى.  
  
 
==البنية العامة==
 
==البنية العامة==
<syntaxhighlight lang="kotlin">
+
يمكن استدعاء الدالة <code>partition()‎</code> عبر  [[Kotlin/Array|المصفوفات]]:<syntaxhighlight lang="kotlin">
fun Array<out Double>.min(): Double?
+
inline fun <T> Array<out T>.partition(
fun Array<out Float>.min(): Float?
+
    predicate: (T) -> Boolean
fun FloatArray.min(): Float?
+
): Pair<List<T>, List<T>>
fun DoubleArray.min(): Double?
+
inline fun ByteArray.partition(
fun Iterable<Double>.min(): Double?
+
    predicate: (Byte) -> Boolean
fun Iterable<Float>.min(): Float?
+
): Pair<List<Byte>, List<Byte>>  
</syntaxhighlight>'''بيئة التشغيل: Kotlin 1.1'''
+
inline fun ShortArray.partition(
 +
    predicate: (Short) -> Boolean
 +
): Pair<List<Short>, List<Short>>
 +
inline fun IntArray.partition(
 +
    predicate: (Int) -> Boolean
 +
): Pair<List<Int>, List<Int>>  
 +
inline fun LongArray.partition(
 +
    predicate: (Long) -> Boolean
 +
): Pair<List<Long>, List<Long>>
 +
inline fun FloatArray.partition(
 +
    predicate: (Float) -> Boolean
 +
): Pair<List<Float>, List<Float>>
 +
inline fun DoubleArray.partition(
 +
    predicate: (Double) -> Boolean
 +
): Pair<List<Double>, List<Double>>
 +
inline fun BooleanArray.partition(
 +
    predicate: (Boolean) -> Boolean
 +
): Pair<List<Boolean>, List<Boolean>>
 +
inline fun CharArray.partition(
 +
    predicate: (Char) -> Boolean
 +
): Pair<List<Char>, List<Char>>  
  
إن كان أيّ من العناصر  يساوي <code>NaN</code> فستعيد الدالة<code>partition()‎</code> القيمة <code>NaN</code>: <syntaxhighlight lang="kotlin">
 
fun <T : Comparable<T>> Array<out T>.min(): T?
 
fun ByteArray.min(): Byte?
 
fun ShortArray.min(): Short?
 
fun IntArray.min(): Int?
 
fun LongArray.min(): Long?
 
fun CharArray.min(): Char?
 
fun <T : Comparable<T>> Iterable<T>.min(): T?
 
 
</syntaxhighlight>
 
</syntaxhighlight>
 +
 +
يمكن استدعاء الدالة <code>partition()‎</code> عبر  [[Kotlin/collections|المجموعات]]: <syntaxhighlight lang="kotlin">
 +
inline fun <T> Iterable<T>.partition(
 +
    predicate: (T) -> Boolean
 +
): Pair<List<T>, List<T>>
 +
</syntaxhighlight>يُلاحَظ وجود الكلمة المفتاحية <code>inline</code> للدلالة على أن هذه الدالة مباشرة، وللمزيد من التفاصيل راجع <nowiki/>[[Kotlin/inline functions|توثيق الدوال المباشرة (inline functions)]].
 +
 
==القيم المٌعادة==
 
==القيم المٌعادة==
أصغر عنصر في  [[Kotlin/Array|المصفوفة]] أو [[Kotlin/collections|المجموعة]] التي استُدعيت عبرها، أو <code>null</code> إن كانت فارغة.
+
زوج مكوّن من [[Kotlin/List|لائحتين]]، [[Kotlin/List|اللائحة]] الأولى تضم العناصر التي تحقق الشرط المنطقي المُمرّر <code>predicate</code> (أي تعيد <code>true</code>)، بينما تضم الثانية العناصر الأخرى.  
 
==أمثلة==
 
==أمثلة==
===استخدام الدالة <code>()partition</code> مع المصفوفات===
+
===استخدام الدالة <code>()partition</code> مع اللوائح===
تعرف الشيفرة الآتية <nowiki/>[[Kotlin/Array|مصفوفة]]<nowiki/> باسم <code>array</code>مكونة من ستة أعداد باستخدام الدالة <code>()arrayOf</code>، ثم تستدعي الدالة <code>()partition</code> عبر <code>array</code>  للحصول على أصغر عدد فيها<nowiki/>، ثم تطبع الناتج:<syntaxhighlight lang="kotlin">
+
تعرف الشيفرة الآتية <nowiki/>[[Kotlin/List|لائحة]]<nowiki/><nowiki/> باسم <code>iterable</code>مكونة من خمسة أعداد باستخدام الدالة <code>()listOf</code>، ثم تستدعي الدالة <code>()partition</code> عبر <code>iterable</code>  للحصول على [[Kotlin/Pair|زوج]] من النوع <code>Pair<Iterable<Int>, Iterable<Int>></code>‎ مكون من [[Kotlin/List|لائحتين]]، الأولى تضم الأعداد الزوجية، والأخرى تضم الأعداد الفردية<nowiki/>، ثم تطبع الناتج:<syntaxhighlight lang="kotlin">
 
fun main(args: Array<String>) {
 
fun main(args: Array<String>) {
val array = arrayOf(0, 2, 2, 4, 7, 5)
+
    val iterable = listOf(1, 2, 3, 4, 5)
       
+
 
println(array.min())   // 0
+
    val pair: Pair<Iterable<Int>, Iterable<Int>> = iterable.partition { it % 2 == 0 }
 +
 
 +
    println(pair) // ([2, 4], [1, 3, 5])
 
}
 
}
 
</syntaxhighlight>
 
</syntaxhighlight>
سطر 35: سطر 56:
 
*<code>[[Kotlin/collections/max|max()]]</code>‎: تعيد أكبر عنصر في  [[Kotlin/Array|المصفوفة]] أو [[Kotlin/collections|المجموعة]]  التي استُدعيت عبرها، أو <code>null</code> إن كانت فارغة.
 
*<code>[[Kotlin/collections/max|max()]]</code>‎: تعيد أكبر عنصر في  [[Kotlin/Array|المصفوفة]] أو [[Kotlin/collections|المجموعة]]  التي استُدعيت عبرها، أو <code>null</code> إن كانت فارغة.
 
==مصادر==
 
==مصادر==
*[https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/min.html الدالة  partition()‎ في التوثيق الرسميّ للمكتبة القياسيّة في لغة Kotlin.]
+
*[https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/partition.html الدالة  partition()‎ في التوثيق الرسميّ للمكتبة القياسيّة في لغة Kotlin.]
 
[[تصنيف:Kotlin]]
 
[[تصنيف:Kotlin]]
 
[[تصنيف:Kotlin Functions]]
 
[[تصنيف:Kotlin Functions]]

مراجعة 17:11، 31 مايو 2018

تُقسّم الدالةُpartition()‎ المصفوفة أو المجموعة التي استُدعيت عبرها إلى زوج مكوّن من لائحتين، اللائحة الأولى تضم العناصر التي تحقق الشرط المنطقي المُمرّر predicate (أي تعيد true)، بينما تضم الثانية العناصر الأخرى.

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

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

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

يمكن استدعاء الدالة partition()‎ عبر المجموعات:

inline fun <T> Iterable<T>.partition(
    predicate: (T) -> Boolean
): Pair<List<T>, List<T>>

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

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

زوج مكوّن من لائحتين، اللائحة الأولى تضم العناصر التي تحقق الشرط المنطقي المُمرّر predicate (أي تعيد true)، بينما تضم الثانية العناصر الأخرى.

أمثلة

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

تعرف الشيفرة الآتية لائحة باسم iterableمكونة من خمسة أعداد باستخدام الدالة ()listOf، ثم تستدعي الدالة ()partition عبر iterable للحصول على زوج من النوع Pair<Iterable<Int>, Iterable<Int>>‎ مكون من لائحتين، الأولى تضم الأعداد الزوجية، والأخرى تضم الأعداد الفردية، ثم تطبع الناتج:

fun main(args: Array<String>) {
    val iterable = listOf(1, 2, 3, 4, 5)

    val pair: Pair<Iterable<Int>, Iterable<Int>> = iterable.partition { it % 2 == 0 }

    println(pair) // ([2, 4], [1, 3, 5])
}

انظر أيضًا

مصادر