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

من موسوعة حسوب
لا ملخص تعديل
ط مراجعة وتدقيق.
سطر 1: سطر 1:
<noinclude>{{DISPLAYTITLE: الدالة <code>distinctBy()‎</code> في لغة Kotlin}}</noinclude>
<noinclude>{{DISPLAYTITLE: الدالة <code>distinctBy()‎</code> في لغة Kotlin}}</noinclude>
تعيد الدالة<code>distinctBy()‎</code> [[Kotlin/List|لائحة]] تحتوي عناصر  [[Kotlin/Array|المصفوفة]] أو [[Kotlin/Array|المجموعة]] التي استُدعيت عبرها والتي تختلف نتائج تطبيق الدالة (<code>selector</code>) عليها، ومع احترام ظهور تلك العناصر في <nowiki/>[[Kotlin/Array|المصفوفة]] أو<nowiki/>[[Kotlin/Array|المجموعة]].
تعيد الدالة <code>distinctBy()‎</code> [[Kotlin/List|قائمة]] تحتوي على العناصر الموجودة في [[Kotlin/Array|المصفوفة]] أو [[Kotlin/Array|المجموعة]] التي استُدعيت معها والتي تعطي نتيجة مختلفة عند تطبيق الدالة <code>selector</code> عليها فقط. تُرتَّب العناصر في القائمة الناتجة بنفس ترتيبها في المصفوفة أو المجموعة الأصليَّة.


== البنية العامة ==
== البنية العامة ==
استدعاء الدالة <code>distinctBy()‎</code> عبر  [[Kotlin/Array|مصفوفة]].<syntaxhighlight lang="kotlin">
تستدعى الدالة <code>distinctBy()‎</code> مع [[Kotlin/Array|مصفوفة]]:<syntaxhighlight lang="kotlin">
inline fun <T, K> Array<out T>.distinctBy(
inline fun <T, K> Array<out T>.distinctBy(
     selector: (T) -> K
     selector: (T) -> K
سطر 34: سطر 34:
</syntaxhighlight>
</syntaxhighlight>


في حال استدعاء الدالة <code>distinctBy()‎</code> عبر  [[Kotlin/collections|مجموعة]].<syntaxhighlight lang="kotlin">
وستستدعى مع [[Kotlin/collections|مجموعة]]:<syntaxhighlight lang="kotlin">
inline fun <T, K> Iterable<T>.distinctBy(
inline fun <T, K> Iterable<T>.distinctBy(
     selector: (T) -> K
     selector: (T) -> K
سطر 42: سطر 42:
== القيم المعادة ==
== القيم المعادة ==


[[Kotlin/List|لائحة]] تحتوي عناصر  [[Kotlin/Array|المصفوفة]] أو [[Kotlin/Array|المجموعة]] التي استُدعيت عبرها والتي تختلف نتائج تطبيق دالة (<code>selector</code>) عليها.
تُعاد [[Kotlin/List|قائمة]] تحتوي فقط على العناصر التي تعطي نتيجة مختلفة عند تطبيق الدالة <code>selector</code> عليها والموجودة في المصفوفة أو المجموعة المعطاة.
==أمثلة==
==أمثلة==
===استخدام الدالة <code>()distinctBy</code> مع المصفوفات: الحالة الأولى  ===
===استخدام الدالة <code>()distinctBy</code> مع المصفوفات: الحالة الأولى  ===
تعرف الشيفرة الآتية [[Kotlin/Array|مصفوفة]] باسم <code>array</code>مكونة من تسعة أعداد باستخدام الدالة <code>()arrayOf</code>، ثم تعرف دالة باسم <code>()selector</code>، ثم تستخدم الدالة <code>()distinctBy</code> للحصول على لائحة تضم العناصر التي تختلف نتائج تطبيق الدالة <code>()selector</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 selector: (Int) -> Int = {it+ 10}
println(array.distinctBy(selector)) // [1, 2, 3, 4, 5, 6, 22]
    println(array.distinctBy(selector)) // [1, 2, 3, 4, 5, 6, 22]
}
}
</syntaxhighlight>
</syntaxhighlight>
===استخدام الدالة <code>()distinctBy</code> مع المصفوفات: الحالة الثانية  ===
===استخدام الدالة <code>()distinctBy</code> مع المصفوفات: الحالة الثانية  ===
تعرف الشيفرة الآتية [[Kotlin/Array|مصفوفة]] باسم <code>array</code>مكونة من تسعة أعداد باستخدام الدالة <code>()arrayOf</code>، ثم تعرف دالة باسم <code>()selector</code>، ثم تستخدم الدالة <code>()distinctBy</code> للحصول على لائحة تضم العناصر التي تختلف نتائج تطبيق الدالة <code>()selector</code>عليها، ولأنّ الدالة <code>()selector</code> ستعيد نفس القيمة (<code>0</code>) على كل العناصر،  فستعيد الدالة <code>()distinctBy</code> عنصرًا واحدًا فقط (العنصر الأول):<syntaxhighlight lang="kotlin">
تعرِّف الشيفرة الآتية [[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>) {
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)
سطر 61: سطر 61:
</syntaxhighlight>
</syntaxhighlight>
==انظر أيضًا  ==
==انظر أيضًا  ==
* <code>[[Kotlin/collections/distinct|distinct()]]</code>‎: تعيد  <nowiki/>[[Kotlin/List|لائحة]] تحتوي عناصر <nowiki/>[[Kotlin/Array|المصفوفة]] أو <nowiki/>[[Kotlin/Array|المجموعة]] التي استُدعيت عبرها بدون تكرار مع احترام ظهور تلك العناصر في <nowiki/>[[Kotlin/Array|المصفوفة]] أو<nowiki/>[[Kotlin/Array|المجموعة]].
* <code>[[Kotlin/collections/distinct|distinct()]]</code>‎: تحذف  العناصر المتكررة الموجودة في [[Kotlin/Array|المصفوفة]] أو [[Kotlin/collections|المجموعة]] التي استُدعيت معها وتعيد الناتج في قائمة.
* <code>[[Kotlin/collections/count|count()]]</code>‎: تعيد عدد عناصر  [[Kotlin/Array|المصفوفة]] أو [[Kotlin/Array|المجموعة]] أو [[Kotlin/Array|القاموس]] التي استُدعيت عبرها.
* <code>[[Kotlin/collections/count|count()]]</code>‎: تعيد عدد عناصر  [[Kotlin/Array|المصفوفة]] أو [[Kotlin/Array|المجموعة]] أو [[Kotlin/Array|القاموس]] التي استُدعيت عبرها.



مراجعة 10:22، 4 يوليو 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 عليها والموجودة في المصفوفة أو المجموعة المعطاة.

أمثلة

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

تعرِّف الشيفرة الآتية مصفوفة باسم array باستخدام الدالة ()arrayOf ثم تعرف دالة باسم ()selector لاستعمالها مع الدالة ()distinctBy:

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 ستعيد نفس القيمة (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]
}

انظر أيضًا

مصادر