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

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

تعيد الدالة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>

في حال استدعاء الدالة distinctBy()‎ عبر مجموعة.

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

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

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

أمثلة

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

تعرف الشيفرة الآتية مصفوفة باسم arrayمكونة من تسعة أعداد باستخدام الدالة ()arrayOf، ثم تعرف دالة باسم ()selector، ثم تستخدم الدالة ()distinctBy للحصول على لائحة تضم العناصر التي تختلف نتائج تطبيق الدالة ()selectorعليها، ثم تطبع الناتج:

fun main(args: Array<String>) {
val array = arrayOf(1,2,3,4,4,5,2,6,22)
val selector: (Int) -> Int = {it+ 10}
println(array.distinctBy(selector)) // [1, 2, 3, 4, 5, 6, 22]
}

استخدام الدالة ()distinctBy مع المصفوفات: الحالة الثانية

تعرف الشيفرة الآتية مصفوفة باسم arrayمكونة من تسعة أعداد باستخدام الدالة ()arrayOf، ثم تعرف دالة باسم ()selector، ثم تستخدم الدالة ()distinctBy للحصول على لائحة تضم العناصر التي تختلف نتائج تطبيق الدالة ()selectorعليها، ولأنّ الدالة ()selector ستعيد نفس القيمة (0) على كل العناصر، فستعيد الدالة ()distinctBy عنصرًا واحدًا فقط (العنصر الأول):

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, 2, 3, 4, 5, 6, 22]
}

انظر أيضًا

مصادر