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

من موسوعة حسوب
اذهب إلى التنقل اذهب إلى البحث
(أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE: الدالة <code>asIterable()‎</code> في لغة Kotlin}}</noinclude> يختلف سلوك الدالة <code>asIterable()‎</code> بح...')
 
سطر 1: سطر 1:
 
<noinclude>{{DISPLAYTITLE: الدالة <code>asIterable()‎</code> في لغة Kotlin}}</noinclude>
 
<noinclude>{{DISPLAYTITLE: الدالة <code>asIterable()‎</code> في لغة Kotlin}}</noinclude>
يختلف سلوك الدالة <code>asIterable()‎</code> بحسب طريقة استدعائها:
+
تُنشئ الدالة <code>asIterable()‎</code>نسخة تكرارية (Iterable instance) والتي تُغلّف المصفوفة الاصلية وتعيد عناصرها عندما تطبق عليها حلقات التكرار (مثل <code>[[Kotlin/control flow#.D8.AA.D8.B9.D8.A8.D9.8A.D8.B1 for|for]]</code>).
* في حال استدعاء الدالة <code>asIterable()‎</code> عبر مصفوفة أو مجموعة (collection) دون تمرير أيّ معامل (parameter) لها فستعيد القيمة<code>true</code> إن كانت المصفوفة أو المجموعة تحتوي على عنصر  واحد على الأقل، أو <code>false</code> خلاف ذلك.
 
* في حال تمرير دالة كوسيط إلى المصفوفة أو المجموعة التي استُدعيت الدالة <code>asIterable()‎</code> عبرها فستعيد القيمة <code>true</code> إن كان واحد على الأقل من عناصر المصفوفة أو المجموعةيحقق العبارة المنطقية (predicate) المحددة، أو <code>false</code> خلاف ذلك
 
* في حال استدعاء الدالة <code>asIterable()‎</code> عبر قاموس (Map) وتمرير دالة لها كمعامل، فستُعيد القيمة <code>true</code> إن كان واحد على الأقل من مداخل (entries) القاموس الذي استُدعيت عبره يحقق العبارة المنطقية (predicate) المحددة:
 
* إن استُدعيت عبر قاموس دون تمرير أي معامل (parameter) إليها، فستعيدالقيمة<code>true</code> إن كان القاموس يحتوي على مدخل (entry) واحد على الأقل، أو <code>false</code> خلاف ذلك.
 
 
 
 
== البنية العامة ==
 
== البنية العامة ==
 
يمكن استدعاء الدالة <code>asIterable()‎</code>عبر مصفوفة دون معامل:<syntaxhighlight lang="kotlin">
 
يمكن استدعاء الدالة <code>asIterable()‎</code>عبر مصفوفة دون معامل:<syntaxhighlight lang="kotlin">
fun <T> Array<out T>.any(): Boolean
+
fun <T> Array<out T>.asIterable(): Iterable<T>
fun ByteArray.any(): Boolean )
+
fun ByteArray.asIterable(): Iterable<Byte>
fun ShortArray.any(): Boolean
+
fun ShortArray.asIterable(): Iterable<Short>
fun IntArray.any(): Boolean
+
fun IntArray.asIterable(): Iterable<Int>
fun LongArray.any(): Boolean
+
fun LongArray.asIterable(): Iterable<Long>
fun FloatArray.any(): Boolean
+
fun FloatArray.asIterable(): Iterable<Float>
fun DoubleArray.any(): Boolean
+
fun DoubleArray.asIterable(): Iterable<Double>
fun BooleanArray.any(): Boolean  
+
fun BooleanArray.asIterable(): Iterable<Boolean>
fun CharArray.any(): Boolean
+
fun CharArray.asIterable(): Iterable<Char>
 
</syntaxhighlight>يمكن استدعاء الدالة <code>any()‎</code>عبر مصفوفة بتمرير دالة كمعامل:<syntaxhighlight lang="kotlin">
 
</syntaxhighlight>يمكن استدعاء الدالة <code>any()‎</code>عبر مصفوفة بتمرير دالة كمعامل:<syntaxhighlight lang="kotlin">
 
inline fun <T> Array<out T>.any(predicate: (T) -> Boolean): Boolean  
 
inline fun <T> Array<out T>.any(predicate: (T) -> Boolean): Boolean  

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

تُنشئ الدالة 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 خلاف ذلك.

مصادر