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

من موسوعة حسوب
ط استبدال النص - 'Kotlin Functions' ب'Kotlin Function'
طلا ملخص تعديل
 
سطر 39: سطر 39:
): List<T>
): List<T>
</syntaxhighlight>
</syntaxhighlight>
== المعاملات ==
=== <code>selector</code> ===
الدالة المراد تطبيقها على كل عنصر من عناصر [[Kotlin/Array|المصفوفة]] أو [[Kotlin/Array|المجموعة]] المعطاة.


== القيم المعادة ==
== القيم المعادة ==
سطر 44: سطر 49:
تُعاد [[Kotlin/List|قائمة]] تحتوي فقط على العناصر التي تعطي نتيجة مختلفة عند تطبيق الدالة <code>selector</code> عليها والموجودة في المصفوفة أو المجموعة المعطاة.
تُعاد [[Kotlin/List|قائمة]] تحتوي فقط على العناصر التي تعطي نتيجة مختلفة عند تطبيق الدالة <code>selector</code> عليها والموجودة في المصفوفة أو المجموعة المعطاة.
==أمثلة==
==أمثلة==
===استخدام الدالة <code>()distinctBy</code> مع المصفوفات: الحالة الأولى  ===
مثالٌ على استعمال الدالة <code>()distinctBy</code>:<syntaxhighlight lang="kotlin">
تعرِّف الشيفرة الآتية [[Kotlin/Array|مصفوفة]] باسم <code>array</code> باستخدام الدالة <code>()arrayOf</code> ثم تعرف دالة باسم <code>()selector</code> لاستعمالها مع الدالة <code>()distinctBy</code>:<syntaxhighlight lang="kotlin">
fun main(args: Array<String>) {
fun main(args: Array<String>) {
     val array = arrayOf(1, 2, 3, 4, 4, 5, 2, 6, 22)
     val array = arrayOf(1, 2, 3, 4, 4, 5, 2, 6, 22)
     val selector: (Int) -> Int = { it + 10 }
     val selector1: (Int) -> Int = { it + 10 }
     println(array.distinctBy(selector)) // [1, 2, 3, 4, 5, 6, 22]
    val selector2: (Int) -> Int = { it * 0 }
}
 
</syntaxhighlight>
     println(array.distinctBy(selector1)) // [1, 2, 3, 4, 5, 6, 22]  
===استخدام الدالة <code>()distinctBy</code> مع المصفوفات: الحالة الثانية  ===
     println(array.distinctBy(selector2)) // [1]
تعرِّف الشيفرة الآتية [[Kotlin/Array|مصفوفة]] باسم <code>array</code>مكونة من تسعة أعداد باستخدام الدالة <code>()arrayOf</code> ثم تعرف دالة باسم <code>()selector</code> لاستعمالها مع الدالة <code>()distinctBy</code>. لأنّ الدالة <code>()selector</code> ستعيد نفس القيمة (<code>0</code>) على كل العناصر،  فستعيد الدالة <code>()distinctBy</code> عنصرًا واحدًا فقط (العنصر الأول):<syntaxhighlight lang="kotlin">
fun main(args: Array<String>) {
    val array = arrayOf(1, 2, 3, 4, 4, 5, 2, 6, 22)
    val selector: (Int) -> Int = { it * 0 }
   
     println(array.distinctBy(selector)) // [1]
}
}
</syntaxhighlight>
</syntaxhighlight>
سطر 71: سطر 69:
[[تصنيف:Kotlin]]
[[تصنيف:Kotlin]]
[[تصنيف:Kotlin Function]]
[[تصنيف:Kotlin Function]]
[[تصنيف:Kotlin Collection]]

المراجعة الحالية بتاريخ 07:43، 8 سبتمبر 2018

تعيد الدالة distinctBy()‎ قائمة تحتوي على العناصر الموجودة في المصفوفة أو المجموعة التي استُدعيت معها والتي تعطي نتيجة مختلفة عند تطبيق الدالة selector عليها فقط. تُرتَّب العناصر في القائمة الناتجة بنفس ترتيبها في المصفوفة أو المجموعة الأصليَّة.

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

تستدعى الدالة distinctBy()‎ مع مصفوفة:

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

وستستدعى مع مجموعة:

inline fun <T, K> Iterable<T>.distinctBy(
    selector: (T) -> K
): List<T>

المعاملات

selector

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

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

تُعاد قائمة تحتوي فقط على العناصر التي تعطي نتيجة مختلفة عند تطبيق الدالة selector عليها والموجودة في المصفوفة أو المجموعة المعطاة.

أمثلة

مثالٌ على استعمال الدالة ()distinctBy:

fun main(args: Array<String>) {
    val array = arrayOf(1, 2, 3, 4, 4, 5, 2, 6, 22)
    val selector1: (Int) -> Int = { it + 10 }
    val selector2: (Int) -> Int = { it * 0 }

    println(array.distinctBy(selector1)) // [1, 2, 3, 4, 5, 6, 22]    
    println(array.distinctBy(selector2)) // [1]
}

انظر أيضًا

مصادر