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

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


</syntaxhighlight>يمكن استدعاء الدالة<code>filter()‎</code> على [[Kotlin/collections/Map|القواميس]].<syntaxhighlight lang="kotlin">
== المعاملات ==
inline fun <K, V> Map<out K, V>.filter(
    predicate: (Entry<K, V>) -> Boolean
): Map<K, V>
</syntaxhighlight>يُلاحَظ وجود الكلمة المفتاحية <code>inline</code> للدلالة على أن هذه الدالة مباشرة، وللمزيد من التفاصيل راجع <nowiki/>[[Kotlin/inline functions|توثيق الدوال المباشرة (inline functions)]].


== القيم المٌعادة ==
=== <code>predicate</code> ===
[[Kotlin/Array|لائحة]] تحتوي عناصر [[Kotlin/Array|المصفوفة]] أو [[Kotlin/collections|المجموعة]] التي تحقق الشرط المنطقي <code>predicate()‎</code>  المُمرّر إلى الدالة. وفي حال استدعائها عبر [[Kotlin/collections/Map|قاموس]] فستعيد قاموسًا جديدًا مكونًا من كل الأزوج التي  تحقق الشرط المنطقي <code>predicate()‎</code> الممرر  إلى الدالة.
دالةٌ تمثل الشرط المراد تطبيقه على كل عنصر من عناصر [[Kotlin/Array|المصفوفة]] أو [[Kotlin/collections|المجموعة]] المعطاة. يمرر إلى هذه الدالة فهرس العنصر وقيمته أيضًا وتعيد قيمة منطقية.


==القيم المعادة==
تُعاد [[Kotlin/collections/List|قائمة]] تحوي عناصر [[Kotlin/Array|المصفوفة]] أو [[Kotlin/collections|المجموعة]] المعطاة التي أعيدت القيمة <code>true</code> معها عند تطبيق الدالة <code>predicate</code> عليها.
==أمثلة==
==أمثلة==
===استخدام الدالة <code>()filterIndexed</code> مع المصفوفات===
تعرِّف الشيفرة الآتية [[Kotlin/Array|مصفوفة]] باسم <code>array</code> باستخدام الدالة <code>()arrayOf</code> ثمَّ تعرِّف الدالة <code>()predicate</code> لاستعمالها مع الدالة <code>()filterIndexed</code> في ترشيح العناصر التي فهرسها أصغر من قيمتها:<syntaxhighlight lang="kotlin">
تعرف الشيفرة الآتية [[Kotlin/Array|مصفوفة]] باسم <code>array</code>مكونة من ستة أعداد باستخدام الدالة <code>()arrayOf</code>، ثم تستخدم الدالة <code>()filterIndexed</code> لتصفية عناصر  [[Kotlin/Array|المصفوفة]] <code>array</code> وانشاء [[Kotlin/Array|مصفوفة]] جديدة تضم عناصر [[Kotlin/Array|المصفوفة]] <code>array</code> الأصغر من <code>3</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>()filterIndexed</code> مع القواميس: الحالة الأولى===
تعرف الشيفرة الآتية [[Kotlin/Array|قاموسًا]] باسم <code>map</code> مكونًا من ثلاثة أزواج باستخدام الدالة <code>()mapOf</code>، ثم تستخدم الدالة <code>()filter</code> لتصفية عناصر  [[Kotlin/collections/Map|القاموس]] <code>map</code> وانشاء [[Kotlin/collections/Map|قاموس]] جديد يضم أزواج [[Kotlin/collections/Map|القاموس]] <code>map</code> التي تكون قيمتها (<code>value</code>) أصغر من <code>2</code>، ثم تطبع الناتج:<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 array = arrayOf(1, 2, 1, 7, 3, 11)
val filteredMap = map.filter { it.value < 2 }
    val predicate: (Int, Int) -> Boolean = { x, y -> x < y }


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

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

ترشِّح الدالة filterIndexed()‎ عناصر المصفوفة أو المجموعة المعطاة بناءً على فهرس العنصر وقيمته.

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

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

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

المعاملات

predicate

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

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

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

أمثلة

تعرِّف الشيفرة الآتية مصفوفة باسم array باستخدام الدالة ()arrayOf ثمَّ تعرِّف الدالة ()predicate لاستعمالها مع الدالة ()filterIndexed في ترشيح العناصر التي فهرسها أصغر من قيمتها:

fun main(args: Array<String>) {
    val array = arrayOf(1, 2, 1, 7, 3, 11)
    val predicate: (Int, Int) -> Boolean = { x, y -> x < y }

    println(array.filterIndexed(predicate)) // [1, 2, 7, 11]
}

انظر أيضًا

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

مصادر