الفرق بين المراجعتين لصفحة: «Kotlin/collections/filter»
لا ملخص تعديل |
لا ملخص تعديل |
||
سطر 34: | سطر 34: | ||
): List<T> | ): List<T> | ||
</syntaxhighlight>يمكن استدعاء الدالة<code>filter()</code> على [[Kotlin/collections/ | </syntaxhighlight>يمكن استدعاء الدالة<code>filter()</code> على [[Kotlin/collections/Map|القواميس]].<syntaxhighlight lang="kotlin"> | ||
inline fun <K, V> Map<out K, V>.filter( | inline fun <K, V> Map<out K, V>.filter( | ||
predicate: (Entry<K, V>) -> Boolean | predicate: (Entry<K, V>) -> Boolean | ||
سطر 52: | سطر 52: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
===استخدام الدالة <code>()filter</code> مع القواميس: الحالة الأولى=== | ===استخدام الدالة <code>()filter</code> مع القواميس: الحالة الأولى=== | ||
تعرف الشيفرة الآتية [[Kotlin/Array|قاموسًا]] باسم <code>map</code> مكونًا من ثلاثة أزواج باستخدام الدالة <code>()mapOf</code>، ثم تستخدم الدالة <code>()filter</code> لتصفية عناصر [[Kotlin/ | تعرف الشيفرة الآتية [[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 map = mapOf("key1" to 1, "key2" to 2, "key3" to 3) | ||
سطر 61: | سطر 61: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
===استخدام الدالة <code>()filter</code> مع القواميس: الحالة الثانية=== | ===استخدام الدالة <code>()filter</code> مع القواميس: الحالة الثانية=== | ||
تعرف الشيفرة الآتية [[Kotlin/ | تعرف الشيفرة الآتية [[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"> | ||
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) |
مراجعة 21:51، 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) // {}
}
انظر أيضًا
filterIndexed()
: تعيد لائحة تحتوي عناصر المصفوفة أو المجموعة التي تحقق الشرط المنطقيpredicate()
المُمرّر إلى الدالة والتي تأخذ قيمة وفهرس عناصر المصفوفة أو المجموعة كوسيطين.
مصادر