الدالة partition()‎ في لغة Kotlin

من موسوعة حسوب

تُقسّم الدالةُ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])
}

انظر أيضًا

مصادر