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

من موسوعة حسوب
ط استبدال النص - 'Kotlin Functions' ب'Kotlin Function'
طلا ملخص تعديل
سطر 35: سطر 35:
): Pair<List<T>, List<T>>
): Pair<List<T>, List<T>>
</syntaxhighlight>وجود الكلمة المفتاحية <code>inline</code> يدل على أنَّ هذه الدالة مباشرة (للمزيد من التفاصيل، راجع صفحة [[Kotlin/inline functions|الدوال المباشرة (inline functions)]]).
</syntaxhighlight>وجود الكلمة المفتاحية <code>inline</code> يدل على أنَّ هذه الدالة مباشرة (للمزيد من التفاصيل، راجع صفحة [[Kotlin/inline functions|الدوال المباشرة (inline functions)]]).
== المعاملات ==
=== <code>predicate</code> ===
دالةٌ تطبق على كل عنصر من عناصر [[Kotlin/Array|المصفوفة]] أو [[Kotlin/collections|المجموعة]] المعطاة. يمرر إليها كل عنصر من العناصر على حدة ثم يعيد قيمة منطقية مقابلة له.
==القيم المعادة==
==القيم المعادة==
يعاد زوجٌ من القوائم، إذ تضم الأولى العناصر التي تحقِّق الشرط <code>predicate</code> المعطى (أي تعيد <code>true</code> معها)، بينما تضم الثانية العناصر الأخرى.
يعاد زوجٌ من القوائم، إذ تضم الأولى العناصر التي تحقِّق الشرط <code>predicate</code> المعطى (أي تعيد <code>true</code> معها)، بينما تضم الثانية العناصر الأخرى.

مراجعة 16:12، 4 سبتمبر 2018

تقسم الدالة partition()‎ المصفوفة أو المجموعة التي استُدعيت معها إلى قسمين؛ الأول يضم العناصر التي تحقِّق شرطًا محدَّدًا، والثاني يضم العناصر الأخرى المتبقيَّة.

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

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

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

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

المعاملات

predicate

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

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

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

أمثلة

استعمال الدالة ()partition لفصل الأعداد الزوجية عن الأعداد الفردية:

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

انظر أيضًا

مصادر