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

من موسوعة حسوب
لا ملخص تعديل
لا ملخص تعديل
سطر 5: سطر 5:
== البنية العامة ==
== البنية العامة ==
يمكن استدعاء الدالة <code>all()‎</code> من مصفوفات الأنواع المختلفة كما يلي:<syntaxhighlight lang="kotlin">
يمكن استدعاء الدالة <code>all()‎</code> من مصفوفات الأنواع المختلفة كما يلي:<syntaxhighlight lang="kotlin">
val <T> Array<out T>.lastIndex: IntRange
inline fun <T> Array<out T>.all(predicate: (T) -> Boolean): Boolean
val ByteArray.lastIndex: IntRange
inline fun ByteArray.all(predicate: (Byte) -> Boolean): Boolean
val ShortArray.lastIndex: IntRange
inline fun ShortArray.all(predicate: (Short) -> Boolean): Boolean
val IntArray.lastIndex: IntRange
inline fun IntArray.all(predicate: (Int) -> Boolean): Boolean
val LongArray.lastIndex: IntRange
inline fun LongArray.all(predicate: (Long) -> Boolean): Boolean
val FloatArray.lastIndex: IntRange
inline fun FloatArray.all(predicate: (Float) -> Boolean): Boolean
val DoubleArray.lastIndex: IntRange
inline fun DoubleArray.all(predicate: (Double) -> Boolean): Boolean
val BooleanArray.lastIndex: IntRange
inline fun BooleanArray.all(predicate: (Boolean) -> Boolean): Boolean
val CharArray.lastIndex: IntRange
inline fun CharArray.all(predicate: (Char) -> Boolean): Boolean
</syntaxhighlight>وكذلك من المكرّرات (Iterable):<syntaxhighlight lang="kotlin">
</syntaxhighlight>وكذلك من المكرّرات (Iterables):<syntaxhighlight lang="kotlin">
val <T> List<T>.lastIndex: Int
inline fun <T> Iterable<T>.all(predicate: (T) -> Boolean): Boolean
</syntaxhighlight>وكذلك على القوميس (Maps):<syntaxhighlight lang="kotlin">
</syntaxhighlight>وكذلك على القواميس (Maps):<syntaxhighlight lang="kotlin">
inline fun <K, V> Map<out K, V>.all( predicate: (Entry<K, V>) -> Boolean): Boolean
inline fun <K, V> Map<out K, V>.all( predicate: (Entry<K, V>) -> Boolean): Boolean
</syntaxhighlight>يُلاحَظ وجود الكلمة المفتاحية <code>inline</code> للدلالة على أن هذه الدالة مباشرة، وللمزيد من التفاصيل راجع [[Kotlin/inline functions|توثيق الدوال المباشرة (inline functions)]].
</syntaxhighlight>يُلاحَظ وجود الكلمة المفتاحية <code>inline</code> للدلالة على أن هذه الدالة مباشرة، وللمزيد من التفاصيل راجع [[Kotlin/inline functions|توثيق الدوال المباشرة (inline functions)]].

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


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

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

يمكن استدعاء الدالة all()‎ من مصفوفات الأنواع المختلفة كما يلي:

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

وكذلك من المكرّرات (Iterables):

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

وكذلك على القواميس (Maps):

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

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

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

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

أمثلة

استخدام الدالة ()all على المجالات

تعرف الشيفرة الآتية دالة isEven()‎ تعيد القيمة true إن كان معاملها زوجيا أو تعيد false خلاف ذلك، وأيضًا تعرّف مجالا (range) باسم  zeroToTen يبدأ من واحد وينتهي ب 10، ثم تستخدم الدالة all()‎ للتحقق من أنّ كانت كل عناصر المجال zeroToTen زوجية، ثم تعرف evens والذي هو حاصل ضرب عناصر المجال في 2 باستخدام الدالة map()‎ ونستخدم الدالة all()‎ للتحقق من أنّ كل عناصر المجال evens زوجية:

fun main(args: Array<String>) {
val isEven: (Int) -> Boolean = { it % 2 == 0 }  // تعريف دالة
val zeroToTen = 0..10  // تعريف مجال
println(zeroToTen.all(isEven)) // false

val evens = zeroToTen.map { it * 2 }  // ضرب عناصر المجال في 2
println(evens.all(isEven)) // true
}

استخدام الدالة ()all على لائحة فارغة

تعرف الشيفرة الآتية لائحة فارغة وتتحقق بواسطة الدالة all()‎ من أن كل عناصرها زوجية، والنتيجة هي true، لأنها فارغة:

fun main(args: Array<String>) {
val evens = zeroToTen.map { it * 2 }  // ضرب عناصر المجال في 2
println(evens.all(isEven)) // true
}

انظر أيضًا

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

مصادر