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

من موسوعة حسوب
اذهب إلى التنقل اذهب إلى البحث
(أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE: الدالة any()‎ في لغة Kotlin}}</noinclude> تُعيد الدالة <code>any()‎</code> القيمة <code>true</code> إن كا...')
 
سطر 1: سطر 1:
 
<noinclude>{{DISPLAYTITLE: الدالة any()‎ في لغة Kotlin}}</noinclude>
 
<noinclude>{{DISPLAYTITLE: الدالة any()‎ في لغة Kotlin}}</noinclude>
  
تُعيد الدالة <code>any()‎</code> القيمة <code>true</code> إن كانت كل عناصر المصفوفة أو المُكرّر (Iterable) الذي استُدعيت عبره تحقق العبارة المنطقية (predicate) المحددة، أو <code>false</code> خلاف ذلك.
+
يختلف سلوك الدالة <code>any()‎</code> بحسب طريقة استدعائها:
 +
* في حال استدعاء الدالة <code>any()‎</code> عبر مصفوفة أو مجموعة (collection) دون تمرير أيّ معامل (parameter) لها فستعيد القيمة<code>true</code> إن كانت المصفوفة أو المجموعة تحتوي على عنصر  واحد على الأقل، أو <code>false</code> خلاف ذلك.
 +
* في حال تمرير دالة كوسيط إلى المصفوفة أو المجموعة التي استُدعيت الدالة <code>any()‎</code> عبرها فستعيد القيمة <code>true</code> إن كان واحد على الأقل من عناصر المصفوفة أو المجموعةيحقق العبارة المنطقية (predicate) المحددة، أو <code>false</code> خلاف ذلك
 +
* في حال استدعاء الدالة <code>any()‎</code> عبر قاموس (Map) وتمرير دالة لها كمعامل، فستُعيد القيمة <code>true</code> إن كان واحد على الأقل من مداخل (entries) القاموس الذي استُدعيت عبره يحقق العبارة المنطقية (predicate) المحددة:
 +
* إن استُدعيت عبر قاموس دون تمرير أي معامل (parameter) إليها، فستعيدالقيمة<code>true</code> إن كان القاموس يحتوي على مدخل (entry) واحد على الأقل، أو <code>false</code> خلاف ذلك.
  
 
== البنية العامة ==
 
== البنية العامة ==
يمكن استدعاء الدالة <code>any()‎</code> من مصفوفات الأنواع المختلفة كما يلي:<syntaxhighlight lang="kotlin">
+
يمكن استدعاء الدالة <code>any()‎</code>عبر مصفوفة دون معامل:<syntaxhighlight lang="kotlin">
val <T> Array<out T>.lastIndex: IntRange
+
fun <T> Array<out T>.any(): Boolean
val ByteArray.lastIndex: IntRange
+
fun ByteArray.any(): Boolean )
val ShortArray.lastIndex: IntRange
+
fun ShortArray.any(): Boolean
val IntArray.lastIndex: IntRange
+
fun IntArray.any(): Boolean
val LongArray.lastIndex: IntRange
+
fun LongArray.any(): Boolean
val FloatArray.lastIndex: IntRange
+
fun FloatArray.any(): Boolean
val DoubleArray.lastIndex: IntRange
+
fun DoubleArray.any(): Boolean
val BooleanArray.lastIndex: IntRange
+
fun BooleanArray.any(): Boolean
val CharArray.lastIndex: IntRange
+
fun CharArray.any(): Boolean
</syntaxhighlight>وكذلك من المكرّرات (Iterable):<syntaxhighlight lang="kotlin">
+
</syntaxhighlight>يمكن استدعاء الدالة <code>any()‎</code>عبر مصفوفة بتمرير دالة كمعامل:<syntaxhighlight lang="kotlin">
val <T> List<T>.lastIndex: Int
+
inline fun <T> Array<out T>.any(predicate: (T) -> Boolean): Boolean
</syntaxhighlight>وكذلك على القوميس (Maps):<syntaxhighlight lang="kotlin">
+
inline fun ByteArray.any(predicate: (Byte) -> Boolean): Boolean
inline fun <K, V> Map<out K, V>.all( predicate: (Entry<K, V>) -> Boolean): Boolean
+
inline fun ShortArray.any(predicate: (Short) -> Boolean): Boolean
 +
inline fun IntArray.any(predicate: (Int) -> Boolean): Boolean
 +
inline fun LongArray.any(predicate: (Long) -> Boolean): Boolean
 +
inline fun FloatArray.any(predicate: (Float) -> Boolean): Boolean
 +
inline fun DoubleArray.any(predicate: (Double) -> Boolean): Boolean
 +
inline fun BooleanArray.any(predicate: (Boolean) -> Boolean): Boolean
 +
inline fun CharArray.any(predicate: (Char) -> Boolean): Boolean
 +
</syntaxhighlight>يمكن استدعاء الدالة <code>any()‎</code>عبر مُكرر (iterable) بتمرير دالة كمعامل:<syntaxhighlight lang="kotlin">
 +
inline fun <T> Iterable<T>.any(predicate: (T) -> Boolean): Boolean
 +
</syntaxhighlight>يمكن استدعاء الدالة <code>any()‎</code>عبر مُكرر (iterable) دون معامل:<syntaxhighlight lang="kotlin">
 +
fun <T> Iterable<T>.any(): Boolean
 +
 
 +
</syntaxhighlight>يمكن استدعاء الدالة <code>any()‎</code>عبر قاموس (Map) بتمرير دالة كمعامل:<syntaxhighlight lang="kotlin">
 +
inline fun <K, V> Map<out K, V>.any(predicate: (Entry<K, V>) -> Boolean): Boolean
 +
</syntaxhighlight>يمكن استدعاء الدالة <code>any()‎</code>عبر قاموس (Map) دون معامل:<syntaxhighlight lang="kotlin">
 +
fun <K, V> Map<out K, V>.any(): Boolean
 +
 
 
</syntaxhighlight>يُلاحَظ وجود الكلمة المفتاحية <code>inline</code> للدلالة على أن هذه الدالة مباشرة، وللمزيد من التفاصيل راجع [[Kotlin/inline functions|توثيق الدوال المباشرة (inline functions)]].
 
</syntaxhighlight>يُلاحَظ وجود الكلمة المفتاحية <code>inline</code> للدلالة على أن هذه الدالة مباشرة، وللمزيد من التفاصيل راجع [[Kotlin/inline functions|توثيق الدوال المباشرة (inline functions)]].
  
 
== القيم المعادة ==
 
== القيم المعادة ==
<code>true</code> إن كانت كل عناصر المصفوفة أو المُكرّر (Iterable) الذي استُدعيت عبره تحقق العبارة المنطقية (predicate) المحددة، أو <code>false</code> خلاف ذلك.
+
<code>true</code> أو <code>false</code>. (انظر شرح الدالة أعلاه لمزيد من التفاصيل)
  
 
== أمثلة ==
 
== أمثلة ==
  
=== استخدام الدالة <code>()any</code> على المجالات ===
+
=== استخدام الدالة <code>()any</code> على اللوائح دون تمرير مُعامل ===
تعرف الشيفرة الآتية دالة <code>isEven()‎</code> تعيد القيمة <code>true</code> إن كان معاملها زوجيا أو تعيد <code>false</code> خلاف ذلك، وأيضًا تعرّف مجالا (range) باسم  <code>zeroToTen</code> يبدأ من واحد وينتهي ب 10، ثم تستخدم الدالة <code>any()‎</code>  للتحقق من أنّ كانت كل عناصر المجال <code>zeroToTen</code>  زوجية، ثم تعرف <code>evens</code> والذي هو حاصل ضرب عناصر المجال في <code>2</code> باستخدام الدالة <code>[[Kotlin/collections/map|map]]()‎</code> ونستخدم الدالة <code>any()‎</code> للتحقق من أنّ كل عناصر المجال <code>evens</code> زوجية:<syntaxhighlight lang="kotlin">
+
تعرف الشيفرة الآتية لائحة (list) فارغة باسم <code>emptyList</code> باستخدام الدالة <code>emptyList<Int>()</code>‎، ثم تعرف لائحة من 3 عناصر عددية باستخدام الدالة <code>listOf()‎</code>وتطبع قيمة استدعاء الدالة<code>()any</code> على كلا اللائحتين:<syntaxhighlight lang="kotlin">
 
fun main(args: Array<String>) {
 
fun main(args: Array<String>) {
val isEven: (Int) -> Boolean = { it % 2 == 0 }  // تعريف دالة
+
val emptyList = emptyList<Int>()
val zeroToTen = 0..10  // تعريف مجال
+
println(emptyList.any()) // false
println(zeroToTen.all(isEven)) // false
 
  
val evens = zeroToTen.map { it * 2 }  // ضرب عناصر المجال في 2
+
val nonEmptyList = listOf(1, 2, 3)
println(evens.all(isEven)) // true
+
println(nonEmptyList.any()) // true
 
}
 
}
 
</syntaxhighlight>
 
</syntaxhighlight>
  
=== استخدام الدالة <code>()any</code> على لائحة فارغة ===
+
=== ‎استخدام الدالة <code>()any</code> بتمرير دالة كمُعامل ===
تعرف الشيفرة الآتية لائحة فارغة وتتحقق بواسطة الدالة <code>any()‎</code> من أن كل عناصرها زوجية، والنتيجة هي <code>true</code>، لأنها فارغة:<syntaxhighlight lang="kotlin">
+
تعرف الشيفرة الآتيةدالة باسم <code>isEvent‎</code> لاختبار زوجية الأعداد، ثم تعرّف مجالًا (range) باسم  <code>zeroToTen</code> وتطبع قيمة ناتج استدعاء الدالة <code>()any</code> على ذلك المجال، ثم تعرف مجالًا باسم <code>odds</code> مكونًا من أعداد فردية باستخدام الدالة <code>map()‎</code> وتستدعي عبره  الدالة <code>()any</code> ثم تطبع الناتج، وفي الأخير تستدعي الدالة <code>()any</code> على لائحة فارغة وتطبع الناتج:<syntaxhighlight lang="kotlin">
 
fun main(args: Array<String>) {
 
fun main(args: Array<String>) {
val evens = zeroToTen.map { it * 2 }  // ضرب عناصر المجال في 2
+
val isEven: (Int) -> Boolean = { it % 2 == 0 }
println(evens.all(isEven)) // true
+
val zeroToTen = 0..10
 +
println(zeroToTen.any(isEven)) // true
 +
 
 +
val odds = zeroToTen.map { it * 2 + 1 }
 +
println(odds.any { isEven(it) }) // false
 +
 
 +
val emptyList = emptyList<Int>()
 +
println(emptyList.any { true }) // false
 
}
 
}
 
</syntaxhighlight>
 
</syntaxhighlight>
  
 
== انظر أيضًا ==
 
== انظر أيضًا ==
* <code>[[Kotlin/collections/any|any()]]</code>‎: تُعيد <code>true</code> إن كان عنصر واحد على الأقل من المصفوفة يحقق العبارة المنطقية (predicate) المحددة، أو <code>false</code> خلاف ذلك.
+
* <code>[[Kotlin/collections/all|all()]]</code>‎: تُعيد القيمة <code>true</code> إن كانت كل عناصر المجموعة (collection) التي استُدعيت عبرها تحقق العبارة المنطقية (predicate) المحددة، أو<code>false</code> خلاف ذلك.
  
 
== مصادر ==
 
== مصادر ==

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


يختلف سلوك الدالة any()‎ بحسب طريقة استدعائها:

  • في حال استدعاء الدالة any()‎ عبر مصفوفة أو مجموعة (collection) دون تمرير أيّ معامل (parameter) لها فستعيد القيمةtrue إن كانت المصفوفة أو المجموعة تحتوي على عنصر واحد على الأقل، أو false خلاف ذلك.
  • في حال تمرير دالة كوسيط إلى المصفوفة أو المجموعة التي استُدعيت الدالة any()‎ عبرها فستعيد القيمة true إن كان واحد على الأقل من عناصر المصفوفة أو المجموعةيحقق العبارة المنطقية (predicate) المحددة، أو false خلاف ذلك
  • في حال استدعاء الدالة any()‎ عبر قاموس (Map) وتمرير دالة لها كمعامل، فستُعيد القيمة true إن كان واحد على الأقل من مداخل (entries) القاموس الذي استُدعيت عبره يحقق العبارة المنطقية (predicate) المحددة:
  • إن استُدعيت عبر قاموس دون تمرير أي معامل (parameter) إليها، فستعيدالقيمةtrue إن كان القاموس يحتوي على مدخل (entry) واحد على الأقل، أو false خلاف ذلك.

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

يمكن استدعاء الدالة any()‎عبر مصفوفة دون معامل:

fun <T> Array<out T>.any(): Boolean 
fun ByteArray.any(): Boolean )
fun ShortArray.any(): Boolean
fun IntArray.any(): Boolean 
fun LongArray.any(): Boolean 
fun FloatArray.any(): Boolean 
fun DoubleArray.any(): Boolean
fun BooleanArray.any(): Boolean 
fun CharArray.any(): Boolean

يمكن استدعاء الدالة any()‎عبر مصفوفة بتمرير دالة كمعامل:

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

يمكن استدعاء الدالة any()‎عبر مُكرر (iterable) بتمرير دالة كمعامل:

inline fun <T> Iterable<T>.any(predicate: (T) -> Boolean): Boolean

يمكن استدعاء الدالة any()‎عبر مُكرر (iterable) دون معامل:

fun <T> Iterable<T>.any(): Boolean

يمكن استدعاء الدالة any()‎عبر قاموس (Map) بتمرير دالة كمعامل:

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

يمكن استدعاء الدالة any()‎عبر قاموس (Map) دون معامل:

fun <K, V> Map<out K, V>.any(): Boolean

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

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

true أو false. (انظر شرح الدالة أعلاه لمزيد من التفاصيل)

أمثلة

استخدام الدالة ()any على اللوائح دون تمرير مُعامل

تعرف الشيفرة الآتية لائحة (list) فارغة باسم emptyList باستخدام الدالة emptyList<Int>()‎، ثم تعرف لائحة من 3 عناصر عددية باستخدام الدالة listOf()‎وتطبع قيمة استدعاء الدالة()any على كلا اللائحتين:

fun main(args: Array<String>) {
val emptyList = emptyList<Int>()
println(emptyList.any()) // false

val nonEmptyList = listOf(1, 2, 3)
println(nonEmptyList.any()) // true
}

‎استخدام الدالة ()any بتمرير دالة كمُعامل

تعرف الشيفرة الآتيةدالة باسم isEvent‎ لاختبار زوجية الأعداد، ثم تعرّف مجالًا (range) باسم zeroToTen وتطبع قيمة ناتج استدعاء الدالة ()any على ذلك المجال، ثم تعرف مجالًا باسم odds مكونًا من أعداد فردية باستخدام الدالة map()‎ وتستدعي عبره الدالة ()any ثم تطبع الناتج، وفي الأخير تستدعي الدالة ()any على لائحة فارغة وتطبع الناتج:

fun main(args: Array<String>) {
val isEven: (Int) -> Boolean = { it % 2 == 0 }
val zeroToTen = 0..10
println(zeroToTen.any(isEven)) // true

val odds = zeroToTen.map { it * 2 + 1 }
println(odds.any { isEven(it) }) // false

val emptyList = emptyList<Int>()
println(emptyList.any { true }) // false
}

انظر أيضًا

  • all()‎: تُعيد القيمة true إن كانت كل عناصر المجموعة (collection) التي استُدعيت عبرها تحقق العبارة المنطقية (predicate) المحددة، أوfalse خلاف ذلك.

مصادر