الفرق بين المراجعتين ل"Kotlin/collections/filterIndexed"

من موسوعة حسوب
اذهب إلى التنقل اذهب إلى البحث
سطر 1: سطر 1:
 
<noinclude>{{DISPLAYTITLE: الدالة <code>filterIndexed()‎</code> في لغة Kotlin}}</noinclude>
 
<noinclude>{{DISPLAYTITLE: الدالة <code>filterIndexed()‎</code> في لغة Kotlin}}</noinclude>
تعيد الدالة<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>filterIndexed()‎</code> [[Kotlin/Array|لائحة]] تحتوي عناصر  [[Kotlin/Array|المصفوفة]] أو [[Kotlin/collections|المجموعة]] التي تحقق الشرط المنطقي <code>predicate()‎</code>  المُمرّر إلى الدالة، الدالة المنطقية <code>predicate()‎</code> تأخذ فهرس العنصر وقيمته كمعامل وتعيد قيمة منطقية.
  
 
==البنية العامة==
 
==البنية العامة==
يمكن استدعاء الدالة<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>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)]].
 
</syntaxhighlight>يُلاحَظ وجود الكلمة المفتاحية <code>inline</code> للدلالة على أن هذه الدالة مباشرة، وللمزيد من التفاصيل راجع <nowiki/>[[Kotlin/inline functions|توثيق الدوال المباشرة (inline functions)]].
 
 
== القيم المٌعادة ==
 
== القيم المٌعادة ==
[[Kotlin/Array|لائحة]] تحتوي عناصر  [[Kotlin/Array|المصفوفة]] أو [[Kotlin/collections|المجموعة]] التي تحقق الشرط المنطقي <code>predicate()‎</code>  المُمرّر إلى الدالة. وفي حال استدعائها عبر [[Kotlin/collections/Map|قاموس]] فستعيد قاموسًا جديدًا مكونًا من كل الأزوج التي  تحقق الشرط المنطقي <code>predicate()‎</code> الممرر  إلى الدالة.
+
[[Kotlin/Array|لائحة]] تحتوي عناصر  [[Kotlin/Array|المصفوفة]] أو [[Kotlin/collections|المجموعة]] التي تحقق الشرط المنطقي <code>predicate()‎</code>  المُمرّر إلى الدالة.
  
 
==أمثلة==
 
==أمثلة==
 
===استخدام الدالة <code>()filterIndexed</code> مع المصفوفات===
 
===استخدام الدالة <code>()filterIndexed</code> مع المصفوفات===
تعرف الشيفرة الآتية [[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">
+
تعرف الشيفرة الآتية [[Kotlin/Array|مصفوفة]] باسم <code>array</code>مكونة من ستة أعداد باستخدام الدالة <code>()arrayOf</code>، ثم تستخدم الدالة <code>()filterIndexed</code> لتصفية عناصر  [[Kotlin/Array|المصفوفة]] <code>array</code> بواسطة الدالة  <code>()predicate</code> المعرّفة في الشيفرة، وتنشئ [[Kotlin/collections/List|لائحة]] جديدة تضم عناصر [[Kotlin/Array|المصفوفة]] <code>array</code> التي فهرسها أصغر من قيمتها، ثم تطبع الناتج:<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,1,7,3,11)
println(array.filter {it < 3}) // [1, 2]
+
val predicate : (Int,Int) -> Boolean = {x,y ->  x  < y }
}
 
</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>) {
 
val map = mapOf("key1" to 1, "key2" to 2, "key3" to 3)
 
val filteredMap = map.filter { it.value < 2 }
 
  
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/filter|filter()]]</code>‎: تعيد  <nowiki/>[[Kotlin/Array|لائحة]] تحتوي عناصر <nowiki/>[[Kotlin/Array|المصفوفة]] أو <nowiki/>[[Kotlin/collections|المجموعة]] التي تحقق الشرط المنطقي <code>predicate()</code> المُمرّر إلى الدالة. وفي حال استدعائها عبرقاموس فستعيد قاموسًا جديدًا مكونًا من كل الأزوج التي تحقق الشرط المنطقي <code>predicate()‎</code> الممرر إلى الدالة.
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>
 
===انظر أيضًا===
 
*<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.]
 
 
 
[[تصنيف:Kotlin]]
 
[[تصنيف:Kotlin]]
 
[[تصنيف:Kotlin Functions]]
 
[[تصنيف:Kotlin Functions]]

مراجعة 11:03، 15 مايو 2018

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

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

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 للدلالة على أن هذه الدالة مباشرة، وللمزيد من التفاصيل راجع توثيق الدوال المباشرة (inline functions).

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

لائحة تحتوي عناصر المصفوفة أو المجموعة التي تحقق الشرط المنطقي predicate()‎ المُمرّر إلى الدالة.

أمثلة

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

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

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]
}

انظر أيضًا

  • filter()‎: تعيد  لائحة تحتوي عناصر المصفوفة أو المجموعة التي تحقق الشرط المنطقي predicate()‎ المُمرّر إلى الدالة. وفي حال استدعائها عبرقاموس فستعيد قاموسًا جديدًا مكونًا من كل الأزوج التي تحقق الشرط المنطقي predicate()‎ الممرر إلى الدالة.

مصادر