الدالة asIterable()
في لغة Kotlin
تُنشئ الدالة asIterable()
نسخة تكرارية (Iterable instance) والتي تُغلّف المصفوفة الاصلية وتعيد عناصرها عندما تطبق عليها حلقات التكرار (مثل for
).
البنية العامة
يمكن استدعاء الدالة asIterable()
عبر مصفوفة دون معامل:
fun <T> Array<out T>.asIterable(): Iterable<T>
fun ByteArray.asIterable(): Iterable<Byte>
fun ShortArray.asIterable(): Iterable<Short>
fun IntArray.asIterable(): Iterable<Int>
fun LongArray.asIterable(): Iterable<Long>
fun FloatArray.asIterable(): Iterable<Float>
fun DoubleArray.asIterable(): Iterable<Double>
fun BooleanArray.asIterable(): Iterable<Boolean>
fun CharArray.asIterable(): Iterable<Char>
يمكن استدعاء الدالة 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
. (انظر شرح الدالة أعلاه لمزيد من التفاصيل)
أمثلة
استخدام الدالة ()asIterable
على اللوائح دون تمرير مُعامل
تعرف الشيفرة الآتية لائحة (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
خلاف ذلك.