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

من موسوعة حسوب
أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE: الدالة <code>filter()‎</code> في لغة Kotlin}}</noinclude> تعيّن الدالة<code>filter()‎</code> قيمة العناصر...'
 
طلا ملخص تعديل
 
(11 مراجعة متوسطة بواسطة 3 مستخدمين غير معروضة)
سطر 1: سطر 1:
<noinclude>{{DISPLAYTITLE: الدالة <code>filter()‎</code> في لغة Kotlin}}</noinclude>
ترشِّح الدالة <code>filter()‎</code> عناصر [[Kotlin/Array|المصفوفة]] أو [[Kotlin/collections|المجموعة]] أو أزواج الخرائط المعطاة التي تحقِّق شرطًا معيَّنًا ثمّ تعيدها.
تعيّن الدالة<code>filter()‎</code> قيمة العناصر الموجودة في الفهارس المحددة  [[Kotlin/Array|للمصفوفة]] أو [[Kotlin/Array|اللائحة]] التي استُدعيت عبرها وتعطيها القيمة الممررة إليها.
==البنية العامة==
يمكن استدعاء الدالة <code>filter()‎</code> مع [[Kotlin/Array|المصفوفات]] و<nowiki/>[[Kotlin/collections|المجموعات]]:<syntaxhighlight lang="kotlin">
inline fun <T> Array<out T>.filter(
    predicate: (T) -> Boolean
): List<T>
inline fun ByteArray.filter(
    predicate: (Byte) -> Boolean
): List<Byte>
inline fun ShortArray.filter(
    predicate: (Short) -> Boolean
): List<Short>
inline fun IntArray.filter(
    predicate: (Int) -> Boolean
): List<Int>
inline fun LongArray.filter(
    predicate: (Long) -> Boolean
): List<Long>
inline fun FloatArray.filter(
    predicate: (Float) -> Boolean
): List<Float>
inline fun DoubleArray.filter(
    predicate: (Double) -> Boolean
): List<Double>
inline fun BooleanArray.filter(
    predicate: (Boolean) -> Boolean
): List<Boolean>
inline fun CharArray.filter(
    predicate: (Char) -> Boolean
): List<Char>
inline fun <T> Iterable<T>.filter(
    predicate: (T) -> Boolean
): List<T>


== البنية العامة ==
</syntaxhighlight>ومع الخرائط أيضًا:<syntaxhighlight lang="kotlin">
يمكن استدعاء الدالة<code>filter()‎</code> على [[Kotlin/Array|المصفوفات]].<syntaxhighlight lang="kotlin">
inline fun <K, V> Map<out K, V>.filter(
fun <T> Array<T>.fill(
     predicate: (Entry<K, V>) -> Boolean
     element: T,  
): Map<K, V>
    fromIndex: Int = 0,  
</syntaxhighlight>وجود الكلمة المفتاحية <code>inline</code> يدل على أن هذه الدالة مباشرة (لمزيد من التفاصيل، راجع <nowiki/>[[Kotlin/inline functions|توثيق الدوال المباشرة]]).
    toIndex: Int = size)  
 
fun ByteArray.fill(
== المعاملات ==
    element: Byte,
 
    fromIndex: Int = 0,
=== <code>predicate</code> ===
    toIndex: Int = size)
دالةٌ تمثل الشرط المراد تطبيقه على كل عنصر من عناصر [[Kotlin/Array|المصفوفة]] أو [[Kotlin/collections|المجموعة]] أو أزواج الخرائط المعطاة. يمرر إلى هذه الدالة عنصر وتعيد قيمة منطقية معه.
fun ShortArray.fill(
 
    element: Short,
==القيم المعادة==
    fromIndex: Int = 0,
إن أعطيت [[Kotlin/Array|مصفوفة]] أو [[Kotlin/collections|مجموعة]]، فستُعاد [[Kotlin/List|قائمة]] تحوي العناصر التي أعيدت القيمة <code>true</code> معها عند تطبيق الدالة <code>predicate()</code> المُمرَّرة عليها. أمَّا إن أعطيت خريطة، فستُعاد خريطة جديدة تحوي الأزواج (قيمة/مفتاح) التي أعيدت القيمة <code>true</code> معها عند تطبيق الدالة <code>predicate()‎</code> المعطاة عليها؛ ترتَّب الأزواج المعادة في هذه الخريطة بنفس ترتيبها في الخريطة الأصليَّة.
    toIndex: Int = size)
fun IntArray.fill(
    element: Int,
    fromIndex: Int = 0,
    toIndex: Int = size)
fun LongArray.fill(
    element: Long,
    fromIndex: Int = 0,
    toIndex: Int = size)
fun FloatArray.fill(
    element: Float,
    fromIndex: Int = 0,
    toIndex: Int = size)
fun DoubleArray.fill(
    element: Double,
    fromIndex: Int = 0,
    toIndex: Int = size)
fun BooleanArray.fill(
    element: Boolean,
    fromIndex: Int = 0,
    toIndex: Int = size)
fun CharArray.fill(
    element: Char,
    fromIndex: Int = 0,
    toIndex: Int = size)
</syntaxhighlight>يمكن استدعاء الدالة<code>filter()‎</code> على [[Kotlin/collections/List|اللوائح]].<syntaxhighlight lang="kotlin">
inline fun <T> MutableList<T>.fill(value: T)  
</syntaxhighlight>يُلاحَظ وجود الكلمة المفتاحية <code>inline</code> للدلالة على أن هذه الدالة مباشرة، وللمزيد من التفاصيل راجع <nowiki/>[[Kotlin/inline functions|توثيق الدوال المباشرة (inline functions)]].
==أمثلة==
==أمثلة==
===استخدام الدالة <code>()filter</code> مع المصفوفات  ===
استعمال الدالة <code>()filter</code> مع مصفوفة لترشيح العناصر التي تقل قيمتها عن القيمة 3:<syntaxhighlight lang="kotlin">
تعرف الشيفرة الآتية [[Kotlin/Array|مصفوفة]] باسم <code>array</code>مكونة من ستة أعداد باستخدام الدالة <code>()arrayOf</code>، ثم تستخدم الدالة <code>()fill</code> لتعيين العناصر الموجودة عند الفهارس من <code>2</code> حتى <code>4</code> في [[Kotlin/Array|المصفوفة]] وإعطائها القيمة <code>12</code>، ثم تطبع التمثيل النصي [[Kotlin/Array|للمصفوفة]] باستخادم الدالة <code>()contentToString</code> ثم تطبع الناتج:<syntaxhighlight lang="kotlin">
fun main(args: Array<String>) {
    val array = arrayOf(1, 2, 3, 4, 5, 6)
    println(array.filter { it < 3 }) // [1, 2]
}
</syntaxhighlight>
استعمال الدالة <code>()filter</code> مع خريطة لترشيح الأزواج (قيمة/مفتاح) التي تكون فيها القيمة أقل من 2:<syntaxhighlight lang="kotlin">
fun main(args: Array<String>) {
fun main(args: Array<String>) {
val array = arrayOf(1,2,3,4,5,6)
    val map = mapOf("key1" to 1, "key2" to 2, "key3" to 3)
array.fill(12,2,4)
    val filteredMap = map.filter { it.value < 2 }


println(array.contentToString()) // [1, 2, 12, 12, 5, 6]
    println(filteredMap) // {key1=1}
}
</syntaxhighlight>استعمال الدالة <code>()filter</code> مع خريطة لترشيح الأزواج (قيمة/مفتاح) التي تكون فيها القيمة مساوية إلى القيمة 0 (لاحظ في هذه الحالة أنَّنا سنحصل على خريطة فارغة لعدم تطابق الأزواج مع الشرط المعطى):<syntaxhighlight lang="kotlin">
fun main(args: Array<String>) {
    val map = mapOf("key1" to 1, "key2" to 2, "key3" to 3)
    val filteredMap = map.filter { it.value == 0 }
 
    println(filteredMap) // {}
}
}
</syntaxhighlight>
</syntaxhighlight>
===انظر أيضًا ===
==انظر أيضًا==
* <code>[[Kotlin/collections/elementAt|elementAt()]]</code>: تعيد العنصر الموجود عند الفهرس (index) المحدد  من  [[Kotlin/Array|المصفوفة]] أو [[Kotlin/Array|المجموعة]] التي استُدعيت عبرها، وفي حال كان ذلك الفهرس خارج حدود [[Kotlin/Array|المصفوفة]] أو [[Kotlin/Array|المجموعة]] فستُطلق <nowiki/>[[Kotlin/exceptions|استثناءً]]  [https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-index-out-of-bounds-exception/index.html IndexOutOfBoundsException].
*الدالة <code>[[Kotlin/collections/filterTo|filterTo()]]</code>: تشبه هذه الدالة في جميع النواحي باستثناء أنها تضيف الناتج إلى المعامل الممرر إليها.
 
*الدالة [[Kotlin/collections/filterIndexed|<code>filterIndexed()</code>‎]]: ترشِّح ترشِّح عناصر [[Kotlin/Array|المصفوفة]] أو [[Kotlin/collections|المجموعة]] المعطاة التي تُعاد القيمة <code>true</code> معها عند تطبيق الدالة <code>predicate()‎</code> المُمرّر عليها، إذ يمرَّر فهرس كل عنصر وقيمته إلى الدالة <code>predicate()‎</code> ثم تعيد بدورها قيمة منطقيَّة.
*الدالة <code>[[Kotlin/collections/fill|fill()‎]]</code>: تبدِّل قيمة جديدة معطاة مكان عناصر محدَّدة في <nowiki/>[[Kotlin/Array|المصفوفة]] أو القائمة التي تستدعى معها.
* الدالة <code>[[Kotlin/collections/elementAtOrElse|elementAtOrElse()‎]]</code>: تجلب عنصرًا ذي فهرس معيَّن من <nowiki/>[[Kotlin/Array|المصفوفة]] أو <nowiki/>[[Kotlin/Array|المجموعة]] التي استُدعيت معها. إن كان الفهرس المعطى خارج حدود <nowiki/>[[Kotlin/Array|المصفوفة]] أو <nowiki/>[[Kotlin/Array|المجموعة]]، فستُعيد الدالة ناتج استدعاء دالة معينة.
* الدالة <code>[[Kotlin/collections/drop|drop()]]</code>‎: تعيد قائمة تحوي جميع عناصر <nowiki/>[[Kotlin/Array|المصفوفة]] أو <nowiki/>[[Kotlin/Array|المجموعة]] التي استُدعيت معها باستثناء آخر <code>n</code> عنصر.
==مصادر==
==مصادر==
*[https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/fill.html الدالة  filter()‎ في التوثيق الرسميّ للمكتبة القياسيّة في لغة Kotlin.]
*[https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/filter.html صفحة الدالة filter()‎ في التوثيق الرسميّ للمكتبة القياسيّة في لغة Kotlin.]<noinclude>{{DISPLAYTITLE: الدالة <code>filter()‎</code> في Kotlin}}</noinclude>
[[تصنيف:Kotlin]]
[[تصنيف:Kotlin]]
[[تصنيف:Kotlin Functions]]
[[تصنيف:Kotlin Function]]
[[تصنيف:Kotlin Collection]]

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

ترشِّح الدالة filter()‎ عناصر المصفوفة أو المجموعة أو أزواج الخرائط المعطاة التي تحقِّق شرطًا معيَّنًا ثمّ تعيدها.

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

يمكن استدعاء الدالة filter()‎ مع المصفوفات والمجموعات:

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

ومع الخرائط أيضًا:

inline fun <K, V> Map<out K, V>.filter(
    predicate: (Entry<K, V>) -> Boolean
): Map<K, V>

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

المعاملات

predicate

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

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

إن أعطيت مصفوفة أو مجموعة، فستُعاد قائمة تحوي العناصر التي أعيدت القيمة true معها عند تطبيق الدالة predicate()‎ المُمرَّرة عليها. أمَّا إن أعطيت خريطة، فستُعاد خريطة جديدة تحوي الأزواج (قيمة/مفتاح) التي أعيدت القيمة true معها عند تطبيق الدالة predicate()‎ المعطاة عليها؛ ترتَّب الأزواج المعادة في هذه الخريطة بنفس ترتيبها في الخريطة الأصليَّة.

أمثلة

استعمال الدالة ()filter مع مصفوفة لترشيح العناصر التي تقل قيمتها عن القيمة 3:

fun main(args: Array<String>) {
    val array = arrayOf(1, 2, 3, 4, 5, 6)
    println(array.filter { it < 3 }) // [1, 2]
}

استعمال الدالة ()filter مع خريطة لترشيح الأزواج (قيمة/مفتاح) التي تكون فيها القيمة أقل من 2:

fun main(args: Array<String>) {
    val map = mapOf("key1" to 1, "key2" to 2, "key3" to 3)
    val filteredMap = map.filter { it.value < 2 }

    println(filteredMap) // {key1=1}
}

استعمال الدالة ()filter مع خريطة لترشيح الأزواج (قيمة/مفتاح) التي تكون فيها القيمة مساوية إلى القيمة 0 (لاحظ في هذه الحالة أنَّنا سنحصل على خريطة فارغة لعدم تطابق الأزواج مع الشرط المعطى):

fun main(args: Array<String>) {
    val map = mapOf("key1" to 1, "key2" to 2, "key3" to 3)
    val filteredMap = map.filter { it.value == 0 }

    println(filteredMap) // {}
}

انظر أيضًا

  • الدالة filterTo()‎: تشبه هذه الدالة في جميع النواحي باستثناء أنها تضيف الناتج إلى المعامل الممرر إليها.
  • الدالة filterIndexed(): ترشِّح ترشِّح عناصر المصفوفة أو المجموعة المعطاة التي تُعاد القيمة true معها عند تطبيق الدالة predicate()‎ المُمرّر عليها، إذ يمرَّر فهرس كل عنصر وقيمته إلى الدالة predicate()‎ ثم تعيد بدورها قيمة منطقيَّة.
  • الدالة fill()‎: تبدِّل قيمة جديدة معطاة مكان عناصر محدَّدة في المصفوفة أو القائمة التي تستدعى معها.
  • الدالة elementAtOrElse()‎: تجلب عنصرًا ذي فهرس معيَّن من المصفوفة أو المجموعة التي استُدعيت معها. إن كان الفهرس المعطى خارج حدود المصفوفة أو المجموعة، فستُعيد الدالة ناتج استدعاء دالة معينة.
  • الدالة drop()‎: تعيد قائمة تحوي جميع عناصر المصفوفة أو المجموعة التي استُدعيت معها باستثناء آخر n عنصر.

مصادر