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

من موسوعة حسوب
لا ملخص تعديل
ط مراجعة وتدقيق.
سطر 1: سطر 1:
<noinclude>{{DISPLAYTITLE: الدالة <code>filterNot()‎</code> في لغة Kotlin}}</noinclude>
<noinclude>{{DISPLAYTITLE: الدالة <code>filterNot()‎</code> في Kotlin}}</noinclude>
تعيد الدالة<code>filterNot()‎</code> [[Kotlin/Array|لائحة]] تحتوي عناصر [[Kotlin/Array|المصفوفة]] أو [[Kotlin/collections|المجموعة]] التي لا تحقق الشرط المنطقي <code>predicate()‎</code>  المُمرّر إلى الدالة. وفي حال استدعائها عبر [[Kotlin/collections/Map|قاموس]] فستعيد قاموسًا جديدًا مكونًا من كل الأزوج التي لا تحقق الشرط المنطقي <code>predicate()‎</code> الممرر  إلى الدالة، هذا [[Kotlin/collections/Map|القاموس]]<nowiki/>الجديد يحافظ على ترتيب تكرار (entry iteration order) [[Kotlin/collections/Map|القاموس]]<nowiki/>الأصلي.
<nowiki/><nowiki/>تعيد الدالة <code>filterNot()‎</code> قائمةً تحوي عناصر [[Kotlin/Array|المصفوفة]] أو [[Kotlin/collections|المجموعة]] التي لم تحقق شرطًا منطقيًّا محدَّدًا. إن استدعيت مع [[Kotlin/collections/Map|خريطة]] (map)، فستعيد خريطة جديدة تحوي الأزواج التي لم تحقق ذلك الشرط المنطقي. تحافظ هذه [[Kotlin/collections/Map|الخريطة]] الجديد على ترتيب تكرار المدخلات (entry iteration order) كما في [[Kotlin/collections/Map|الخريطة]] الأصلية.
 
==البنية العامة==
==البنية العامة==
يمكن استدعاء الدالة<code>filterNot()‎</code> على [[Kotlin/Array|المصفوفات]] أو [[Kotlin/collections|المجموعات]].<syntaxhighlight lang="kotlin">
يمكن استدعاء الدالة <code>filterNot()‎</code> مع [[Kotlin/Array|المصفوفات]] أو [[Kotlin/collections|المجموعات]]:<syntaxhighlight lang="kotlin">
inline fun <T> Array<out T>.filterNot(
inline fun <T> Array<out T>.filterNot(
     predicate: (T) -> Boolean
     predicate: (T) -> Boolean
سطر 35: سطر 34:
): List<T>  
): List<T>  


</syntaxhighlight>يمكن استدعاء الدالة<code>filterNot()‎</code> على [[Kotlin/collections/Map|القواميس]].<syntaxhighlight lang="kotlin">
</syntaxhighlight>ويمكن استدعاؤها مع [[Kotlin/collections/Map|الخرائط]] أيضًا:<syntaxhighlight lang="kotlin">
inline fun <K, V> Map<out K, V>.filterNot(
inline fun <K, V> Map<out K, V>.filterNot(
     predicate: (Entry<K, V>) -> Boolean
     predicate: (Entry<K, V>) -> Boolean
): Map<K, V>
): Map<K, V>
</syntaxhighlight>يُلاحَظ وجود الكلمة المفتاحية <code>inline</code> للدلالة على أن هذه الدالة مباشرة، وللمزيد من التفاصيل راجع <nowiki/>[[Kotlin/inline functions|توثيق الدوال المباشرة (inline functions)]].
</syntaxhighlight>وجود الكلمة المفتاحية <code>inline</code> يدل على أنَّ هذه الدالة مباشرة (لمزيد من التفاصيل، راجع <nowiki/>[[Kotlin/inline functions|توثيق الدوال المباشرة]]).
 
==القيم المٌعادة==
== القيم المٌعادة ==
تُعاد قائمةٌ تحوي عناصر [[Kotlin/Array|المصفوفة]] أو [[Kotlin/collections|المجموعة]] التي لم تحقق الشرط المنطقي <code>predicate()‎</code>  المُمرّر إليها، أو خريطة جديدة -عند استدعائها مع الخرائط- تحوي الأزواج التي لم تحقق ذلك الشرط المنطقي.
[[Kotlin/Array|لائحة]] تحتوي عناصر [[Kotlin/Array|المصفوفة]] أو [[Kotlin/collections|المجموعة]] التي لا تحقق الشرط المنطقي <code>predicate()‎</code>  المُمرّر إلى الدالة. وفي حال استدعائها عبر [[Kotlin/collections/Map|قاموس]] فستعيد قاموسًا جديدًا مكونًا من كل الأزوج التي لا تحقق الشرط المنطقي <code>predicate()‎</code> الممرر  إلى الدالة.
 
==أمثلة==
==أمثلة==
===استخدام الدالة <code>()filterNot</code> مع المصفوفات===
===استخدام الدالة <code>()filterNot</code> مع المصفوفات===
تعرف الشيفرة الآتية [[Kotlin/Array|مصفوفة]] باسم <code>array</code>مكونة من ستة أعداد باستخدام الدالة <code>()arrayOf</code>، ثم تستخدم الدالة <code>()filterNot</code> لتصفية عناصر [[Kotlin/Array|المصفوفة]] <code>array</code> وانشاء [[Kotlin/Array|مصفوفة]] جديدة تضم عناصر [[Kotlin/Array|المصفوفة]] <code>array</code> الأكبر من <code>2</code>، ثم تطبع الناتج:<syntaxhighlight lang="kotlin">
تعرف الشيفرة الآتية [[Kotlin/Array|مصفوفة]] باسم <code>array</code> باستخدام الدالة <code>()arrayOf</code>، ثمَّ تستخدم الدالة <code>()filterNot</code> لترشيح عناصر تلك [[Kotlin/Array|المصفوفة]] الأكبر من 2:<syntaxhighlight lang="kotlin">
fun main(args: Array<String>) {
fun main(args: Array<String>) {
val array = arrayOf(1,2,3,4,5,6)
    val array = arrayOf(1, 2, 3, 4, 5, 6)
println(array.filterNot {it < 3}) // [3, 4, 5, 6]
    println(array.filterNot { it < 3 }) // [3, 4, 5, 6]
}
}
</syntaxhighlight>
</syntaxhighlight>
===استخدام الدالة <code>()filterNot</code> مع القواميس: الحالة الأولى===
===استخدام الدالة <code>()filterNot</code> مع القواميس===
تعرف الشيفرة الآتية [[Kotlin/Array|قاموسًا]] باسم <code>map</code> مكونًا من ثلاثة أزواج باستخدام الدالة <code>()mapOf</code>، ثم تستخدم الدالة <code>()filterNot</code> لتصفية عناصر  [[Kotlin/collections/Map|القاموس]] <code>map</code> وانشاء [[Kotlin/collections/Map|قاموس]] جديد يضم أزواج [[Kotlin/collections/Map|القاموس]] <code>map</code> التي تكون قيمتها (<code>value</code>) أكبر من <code>1</code>، ثم تطبع الناتج:<syntaxhighlight lang="kotlin">
تعرف الشيفرة الآتية خريطة باسم <code>map</code> باستخدام الدالة <code>()mapOf</code>، ثمَّ تستخدم الدالة <code>()filterNot</code> لترشيح أزواج تلك الخريطة التي تزيد قيمتها عن القيمة 1:<syntaxhighlight lang="kotlin">
fun main(args: Array<String>) {
fun main(args: Array<String>) {
val map = mapOf("key1" to 1, "key2" to 2, "key3" to 3)
    val map = mapOf("key1" to 1, "key2" to 2, "key3" to 3)
val filteredMap = map.filterNot { it.value < 2 }
    val filteredMap = map.filterNot { it.value < 2 }


println(filteredMap) // {key2=2, key3=3}
    println(filteredMap) // {key2=2, key3=3}
}
}
</syntaxhighlight>
</syntaxhighlight>تعرف الشيفرة الآتية خريطة أيضًا باسم <code>map</code> باستخدام الدالة <code>()mapOf</code>، ثم تستخدم الدالة <code>()filterNot</code> لترشيح أزواج تلك الخريطة التي تساوي قيمتها القيمة 0. ولما كانت كل الأزواج لا تحقق هذا الشرط المنطقي، فستعيد الدالة <code>()filterNot</code> خريطةً تضم كل الأزواج المعطاة:<syntaxhighlight lang="kotlin">
===استخدام الدالة <code>()filterNot</code> مع القواميس: الحالة الثانية===
تعرف الشيفرة الآتية [[Kotlin/collections/Map|قاموسًا]] باسم <code>map</code> مكونًا من ثلاثة أزواج باستخدام الدالة <code>()mapOf</code>، ثم تستخدم الدالة <code>()filterNot</code> لتصفية عناصر  [[Kotlin/Array|القاموس]] <code>map</code> وانشاء [[Kotlin/collections/Map|قاموس]] جديد يضم أزواج [[Kotlin/collections/Map|القاموس]] <code>map</code> التي تكون قيمتها (<code>value</code>) مساوية للقيمة <code>0</code>، ولما كانت كل الأزواج لا تحقق هذا الشرط المنطقي فستعيد الدالة <code>()filterNot</code> [[Kotlin/collections/Map|قاموسًا]] يضم كل الأزواج، ثم تطبع الناتج:<syntaxhighlight lang="kotlin">
fun main(args: Array<String>) {
fun main(args: Array<String>) {
val map = mapOf("key1" to 1, "key2" to 2, "key3" to 3)
    val map = mapOf("key1" to 1, "key2" to 2, "key3" to 3)
val filteredMap = map.filterNot { it.value == 0 }
    val filteredMap = map.filterNot { it.value == 0 }


println(filteredMap) // {key1=1, key2=2, key3=3}
    println(filteredMap) // {key1=1, key2=2, key3=3}
}
}
</syntaxhighlight>
</syntaxhighlight>
===انظر أيضًا===
==انظر أيضًا==
*<code>[[Kotlin/collections/filterIndexed|filterIndexed()]]</code>: تعيد  [[Kotlin/Array|لائحة]] تحتوي عناصر [[Kotlin/Array|المصفوفة]] أو [[Kotlin/collections|المجموعة]] التي تحقق الشرط المنطقي <code>predicate()‎</code> المُمرّر إلى الدالة والتي تأخذ قيمة وفهرس عناصر  [[Kotlin/Array|المصفوفة]] أو [[Kotlin/collections|المجموعة]] كوسيطين.
*الدالة <code>[[Kotlin/collections/filterNotTo|filterNotTo()]]</code>: تشبه هذه الدالة في جميع النواحي باستثناء أنَّها تضيف الناتج المعاد إلى المعامل الممرَّر إليها.
*<code>[[Kotlin/collections/filter|filter()]]</code>‎: تعيد  <nowiki/>[[Kotlin/Array|لائحة]] تحتوي عناصر <nowiki/>[[Kotlin/Array|المصفوفة]] أو <nowiki/>[[Kotlin/collections|المجموعة]] التي تحقق الشرط المنطقي <code>predicate()‎</code> المُمرّر إلى الدالة. وفي حال استدعائها عبرقاموس فستعيد قاموسًا جديدًا مكونًا من كل الأزوج التي تحقق الشرط المنطقي <code>predicate()‎</code> الممرر إلى الدالة.
*الدالة <code>[[Kotlin/collections/filterNotNull|filterNotNull()‎]]</code>: تعيد جميع عناصر [[Kotlin/Array|المصفوفة]] أو [[Kotlin/collections|المجموعة]] المعطاة باستثناء تلك ذات القيمة <code>null</code>.
*<code>[[Kotlin/collections/filterIsInstance|filterIsInstance()]]</code>‎: تعيد لائحة تحتوي عناصر <nowiki/>[[Kotlin/Array|المصفوفة]] أو <nowiki/>[[Kotlin/collections|المجموعة]] التي استُدعيت عبرها والتي هي نسخة (instance) من نوع (type) أو<nowiki/>[[Kotlin/classes|صنفٍ]] معيّن.
*الدالة <code>[[Kotlin/collections/filterIndexed|filterIndexed()]]</code>‎: ترشِّح عناصر <nowiki/>[[Kotlin/Array|المصفوفة]] أو <nowiki/>[[Kotlin/collections|المجموعة]] المعطاة التي أعيدت القيمة <code>true</code> معها عند تطبيق الدالة <code>predicate()‎</code> المُمرّر عليها، إذ يمرَّر فهرس كل عنصر وقيمته إلى الدالة <code>predicate()‎</code> ثم تعيد بدورها قيمة منطقيَّة.
*<code>[[Kotlin/collections/filterIndexedTo|filterIndexedTo()]]</code>: تضيف  إلى المعامل <code>destination</code> الممرّر إليها عناصرّ <nowiki/>[[Kotlin/collections|المجموعة]] المتغيرة (<code>MutableCollection</code>) التي استُدعيت عبرها والتي تحقق الشرط المنطقي <code>predicate()</code> المُمرّر إلى الدالة.
*الدالة <code>[[Kotlin/collections/filter|filter()]]</code>‎: ترشِّح عناصر <nowiki/>[[Kotlin/Array|المصفوفة]] أو <nowiki/>[[Kotlin/collections|المجموعة]] أو أزواج الخرائط المعطاة التي تحقِّق شرطًا معيَّنًا ثمّ تعيدها.
*الدالة <code>[[Kotlin/collections/filterIsInstance|filterIsInstance()]]</code>: تعيد قائمة تحوي عناصر <nowiki/>[[Kotlin/Array|المصفوفة]] أو <nowiki/>[[Kotlin/collections|المجموعة]] المعطاة التي هي نسخةٌ (instance) من نوع أو <nowiki/>[[Kotlin/classes|صنفٍ]] معيّن.
==مصادر==
==مصادر==
<span> </span>
*[https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/filter-not.html الدالة filterNot()‎ في التوثيق الرسميّ للمكتبة القياسيّة في لغة Kotlin.]
*[https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/filter-not.html الدالة  filterNot()‎ في التوثيق الرسميّ للمكتبة القياسيّة في لغة Kotlin.]
 
[[تصنيف:Kotlin]]
[[تصنيف:Kotlin]]
[[تصنيف:Kotlin Functions]]
[[تصنيف:Kotlin Functions]]

مراجعة 17:11، 22 يوليو 2018

تعيد الدالة filterNot()‎ قائمةً تحوي عناصر المصفوفة أو المجموعة التي لم تحقق شرطًا منطقيًّا محدَّدًا. إن استدعيت مع خريطة (map)، فستعيد خريطة جديدة تحوي الأزواج التي لم تحقق ذلك الشرط المنطقي. تحافظ هذه الخريطة الجديد على ترتيب تكرار المدخلات (entry iteration order) كما في الخريطة الأصلية.

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

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

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

ويمكن استدعاؤها مع الخرائط أيضًا:

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

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

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

تُعاد قائمةٌ تحوي عناصر المصفوفة أو المجموعة التي لم تحقق الشرط المنطقي predicate()‎ المُمرّر إليها، أو خريطة جديدة -عند استدعائها مع الخرائط- تحوي الأزواج التي لم تحقق ذلك الشرط المنطقي.

أمثلة

استخدام الدالة ()filterNot مع المصفوفات

تعرف الشيفرة الآتية مصفوفة باسم array باستخدام الدالة ()arrayOf، ثمَّ تستخدم الدالة ()filterNot لترشيح عناصر تلك المصفوفة الأكبر من 2:

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

استخدام الدالة ()filterNot مع القواميس

تعرف الشيفرة الآتية خريطة باسم map باستخدام الدالة ()mapOf، ثمَّ تستخدم الدالة ()filterNot لترشيح أزواج تلك الخريطة التي تزيد قيمتها عن القيمة 1:

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

    println(filteredMap) // {key2=2, key3=3}
}

تعرف الشيفرة الآتية خريطة أيضًا باسم map باستخدام الدالة ()mapOf، ثم تستخدم الدالة ()filterNot لترشيح أزواج تلك الخريطة التي تساوي قيمتها القيمة 0. ولما كانت كل الأزواج لا تحقق هذا الشرط المنطقي، فستعيد الدالة ()filterNot خريطةً تضم كل الأزواج المعطاة:

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

    println(filteredMap) // {key1=1, key2=2, key3=3}
}

انظر أيضًا

  • الدالة filterNotTo()‎: تشبه هذه الدالة في جميع النواحي باستثناء أنَّها تضيف الناتج المعاد إلى المعامل الممرَّر إليها.
  • الدالة filterNotNull()‎: تعيد جميع عناصر المصفوفة أو المجموعة المعطاة باستثناء تلك ذات القيمة null.
  • الدالة filterIndexed()‎: ترشِّح عناصر المصفوفة أو المجموعة المعطاة التي أعيدت القيمة true معها عند تطبيق الدالة predicate()‎ المُمرّر عليها، إذ يمرَّر فهرس كل عنصر وقيمته إلى الدالة predicate()‎ ثم تعيد بدورها قيمة منطقيَّة.
  • الدالة filter()‎: ترشِّح عناصر المصفوفة أو المجموعة أو أزواج الخرائط المعطاة التي تحقِّق شرطًا معيَّنًا ثمّ تعيدها.
  • الدالة filterIsInstance()‎: تعيد قائمة تحوي عناصر المصفوفة أو المجموعة المعطاة التي هي نسخةٌ (instance) من نوع أو صنفٍ معيّن.

مصادر