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

من موسوعة حسوب
أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE: الدالة <code>filter()‎</code> في لغة Kotlin}}</noinclude> تعيّن الدالة<code>filter()‎</code> قيمة العناصر...'
 
لا ملخص تعديل
سطر 1: سطر 1:
<noinclude>{{DISPLAYTITLE: الدالة <code>filter()‎</code> في لغة Kotlin}}</noinclude>
تعيد الدالة<code>filter()‎</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/Array|اللائحة]] التي استُدعيت عبرها وتعطيها القيمة الممررة إليها.


== البنية العامة ==
==البنية العامة==
يمكن استدعاء الدالة<code>filter()‎</code> على [[Kotlin/Array|المصفوفات]].<syntaxhighlight lang="kotlin">
يمكن استدعاء الدالة<code>filter()‎</code> على [[Kotlin/Array|المصفوفات]] أو [[Kotlin/collections|المجموعات]].<syntaxhighlight lang="kotlin">
fun <T> Array<T>.fill(
inline fun <T> Array<out T>.filter(
     element: T,
     predicate: (T) -> Boolean
    fromIndex: Int = 0,
): List<T>
    toIndex: Int = size)
inline fun ByteArray.filter(
fun ByteArray.fill(
     predicate: (Byte) -> Boolean
     element: Byte,
): List<Byte>
    fromIndex: Int = 0,
inline fun ShortArray.filter(
    toIndex: Int = size)
     predicate: (Short) -> Boolean
fun ShortArray.fill(
): List<Short>
     element: Short,
inline fun IntArray.filter(
    fromIndex: Int = 0,
     predicate: (Int) -> Boolean
    toIndex: Int = size)
): List<Int>
fun IntArray.fill(
inline fun LongArray.filter(
     element: Int,
     predicate: (Long) -> Boolean
    fromIndex: Int = 0,
): List<Long>
    toIndex: Int = size)
inline fun FloatArray.filter(
fun LongArray.fill(
     predicate: (Float) -> Boolean
     element: Long,
): List<Float>
    fromIndex: Int = 0,
inline fun DoubleArray.filter(
    toIndex: Int = size)
     predicate: (Double) -> Boolean
fun FloatArray.fill(
): List<Double>
     element: Float,
inline fun BooleanArray.filter(
    fromIndex: Int = 0,
     predicate: (Boolean) -> Boolean
    toIndex: Int = size)
): List<Boolean>
fun DoubleArray.fill(
inline fun CharArray.filter(
     element: Double,
     predicate: (Char) -> Boolean
    fromIndex: Int = 0,
): List<Char>
    toIndex: Int = size)
inline fun <T> Iterable<T>.filter(
fun BooleanArray.fill(
     predicate: (T) -> Boolean
     element: Boolean,
): List<T>
    fromIndex: Int = 0,
 
    toIndex: Int = size)
</syntaxhighlight>يمكن استدعاء الدالة<code>filter()‎</code> على [[Kotlin/collections/List|القواميس]].<syntaxhighlight lang="kotlin">
fun CharArray.fill(
inline fun <K, V> Map<out K, V>.filter(
     element: Char,
    predicate: (Entry<K, V>) -> Boolean
    fromIndex: Int = 0,
): Map<K, V>
     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)]].
</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> الممرر  إلى الدالة.
==أمثلة==
==أمثلة==
===استخدام الدالة <code>()filter</code> مع المصفوفات ===
===استخدام الدالة <code>()filter</code> مع المصفوفات===
تعرف الشيفرة الآتية [[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">
تعرف الشيفرة الآتية [[Kotlin/Array|مصفوفة]] باسم <code>array</code>مكونة من ستة أعداد باستخدام الدالة <code>()arrayOf</code>، ثم تستخدم الدالة <code>()filter</code> لتصفية عناصر  [[Kotlin/Array|المصفوفة]] <code>array</code> وانشاء [[Kotlin/Array|مصفوفة]] جديدة تضم عناصر [[Kotlin/Array|المصفوفة]] <code>array</code> الأصغر من <code>3</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,3,4,5,6)
array.fill(12,2,4)
println(array.filter {it < 3}) // [1, 2]
}
</syntaxhighlight>
===استخدام الدالة <code>()filter</code> مع القواميس: الحالة الأولى===
تعرف الشيفرة الآتية [[Kotlin/Array|قاموسًا]] باسم <code>map</code> مكونًا من ثلاثة أزواج باستخدام الدالة <code>()mapOf</code>، ثم تستخدم الدالة <code>()filter</code> لتصفية عناصر  [[Kotlin/Array|القاموس]] <code>map</code> وانشاء [[Kotlin/Array|قاموس]] جديد يضم أزواج [[Kotlin/Array|القاموس]] <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(array.contentToString()) // [1, 2, 12, 12, 5, 6]
println(filteredMap) // {key1=1}
}
}
</syntaxhighlight>
</syntaxhighlight>
===انظر أيضًا  ===
===استخدام الدالة <code>()filter</code> مع القواميس: الحالة الثانية===
* <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].
تعرف الشيفرة الآتية [[Kotlin/Array|قاموسًا]] باسم <code>map</code> مكونًا من ثلاثة أزواج باستخدام الدالة <code>()mapOf</code>، ثم تستخدم الدالة <code>()filter</code> لتصفية عناصر [[Kotlin/Array|القاموس]] <code>map</code> وانشاء [[Kotlin/Array|قاموس]] جديد يضم أزواج [[Kotlin/Array|القاموس]] <code>map</code> التي تكون قيمتها (<code>value</code>) مساوية للقيمة <code>0</code>، ولما كانت كل الأزواج لا تحقق هذا الشرط المنطقي فستعيد الدالة <code>()filter</code> [[Kotlin/Array|قاموسًا]] فارغًا، ثم تطبع الناتج:<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>
===انظر أيضًا===
*<code>[[Kotlin/collections/filterIndexed|filterIndexed()]]</code>‎: تعيد  [[Kotlin/Array|لائحة]] تحتوي عناصر  [[Kotlin/Array|المصفوفة]] أو [[Kotlin/collections|المجموعة]] التي تحقق الشرط المنطقي <code>predicate()‎</code>  المُمرّر إلى الدالة والتي تأخذ قيمة وفهرس عناصر  [[Kotlin/Array|المصفوفة]] أو [[Kotlin/collections|المجموعة]] كوسيطين.
==مصادر==
==مصادر==
*[https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/fill.html الدالة  filter()‎ في التوثيق الرسميّ للمكتبة القياسيّة في لغة Kotlin.]
<span> </span>
*[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 Functions]]

مراجعة 21:49، 14 مايو 2018

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

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

يمكن استدعاء الدالة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>

يمكن استدعاء الدالةfilter()‎ على القواميس.

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

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

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

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

أمثلة

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

تعرف الشيفرة الآتية مصفوفة باسم arrayمكونة من ستة أعداد باستخدام الدالة ()arrayOf، ثم تستخدم الدالة ()filter لتصفية عناصر المصفوفة array وانشاء مصفوفة جديدة تضم عناصر المصفوفة array الأصغر من 3، ثم تطبع الناتج:

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

استخدام الدالة ()filter مع القواميس: الحالة الأولى

تعرف الشيفرة الآتية قاموسًا باسم map مكونًا من ثلاثة أزواج باستخدام الدالة ()mapOf، ثم تستخدم الدالة ()filter لتصفية عناصر القاموس map وانشاء قاموس جديد يضم أزواج القاموس map التي تكون قيمتها (value) أصغر من 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 مع القواميس: الحالة الثانية

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

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) // {}
}

انظر أيضًا

مصادر