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

من موسوعة حسوب
أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE: الدالة <code>asIterable()‎</code> في لغة Kotlin}}</noinclude> يختلف سلوك الدالة <code>asIterable()‎</code> بح...'
 
طلا ملخص تعديل
 
(5 مراجعات متوسطة بواسطة 3 مستخدمين غير معروضة)
سطر 1: سطر 1:
<noinclude>{{DISPLAYTITLE: الدالة <code>asIterable()‎</code> في لغة Kotlin}}</noinclude>
<noinclude>{{DISPLAYTITLE: الدالة <code>asIterable()‎</code> في Kotlin}}</noinclude>تُنشِئ الدالة <code>asIterable()‎</code>نسخةً تكراريّةً (iterable instance) تُغلّف (wrap) المصفوفة الأصلية وتعيد عناصرَها عندما تُستخدَم في حلقات التكرار (مثل <code>[[Kotlin/control flow#.D8.AA.D8.B9.D8.A8.D9.8A.D8.B1 for|for]]</code>).
يختلف سلوك الدالة <code>asIterable()‎</code> بحسب طريقة استدعائها:
==البنية العامة==
* في حال استدعاء الدالة <code>asIterable()‎</code> عبر مصفوفة أو مجموعة (collection) دون تمرير أيّ معامل (parameter) لها فستعيد القيمة<code>true</code> إن كانت المصفوفة أو المجموعة تحتوي على عنصر  واحد على الأقل، أو <code>false</code> خلاف ذلك.
<syntaxhighlight lang="kotlin">
* في حال تمرير دالة كوسيط إلى المصفوفة أو المجموعة التي استُدعيت الدالة <code>asIterable()</code> عبرها فستعيد القيمة <code>true</code> إن كان واحد على الأقل من عناصر المصفوفة أو المجموعةيحقق العبارة المنطقية (predicate) المحددة، أو <code>false</code> خلاف ذلك
fun <T> Array<out T>.asIterable(): Iterable<T>
* في حال استدعاء الدالة <code>asIterable()‎</code> عبر قاموس (Map) وتمرير دالة لها كمعامل، فستُعيد القيمة <code>true</code> إن كان واحد على الأقل من مداخل (entries) القاموس الذي استُدعيت عبره يحقق العبارة المنطقية (predicate) المحددة:
fun ByteArray.asIterable(): Iterable<Byte>  
* إن استُدعيت عبر قاموس دون تمرير أي معامل (parameter) إليها، فستعيدالقيمة<code>true</code> إن كان القاموس يحتوي على مدخل (entry) واحد على الأقل، أو <code>false</code> خلاف ذلك.
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>  
</syntaxhighlight>ويمكن استدعاء الدالة <code>asIterable()‎</code>عبر مجموعة ([[Kotlin/collections|collection]]) لتُعيدها على شكل عنصر تكراريّ (iterable):<syntaxhighlight lang="kotlin">
inline fun <T> Iterable<T>.asIterable(): Iterable<T>


== البنية العامة ==
</syntaxhighlight>كما ويمكن استدعاء الدالة <code>asIterable()‎</code>عبر عنصر  map وستعيد نسخةً تكراريةً (iterable instance) تُغلّف عنصر map الأصلي وتعيد مداخله (entries) عندما تُستخدم في حلقات التكرار (مثل حلقة <code>[[Kotlin/control flow#.D8.AA.D8.B9.D8.A8.D9.8A.D8.B1 for|for]]</code>):<syntaxhighlight lang="kotlin">
يمكن استدعاء الدالة <code>asIterable()‎</code>عبر مصفوفة دون معامل:<syntaxhighlight lang="kotlin">
inline fun <K, V> Map<out K, V>.asIterable(): Iterable<Entry<K, V>>
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
</syntaxhighlight>يمكن استدعاء الدالة <code>any()‎</code>عبر مصفوفة بتمرير دالة كمعامل:<syntaxhighlight lang="kotlin">
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
</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">
</syntaxhighlight>ويُلاحَظ وجود الكلمة المفتاحية <code>inline</code> للدلالة على أن هذه الدالة مباشرة، وللمزيد من التفاصيل راجع [[Kotlin/inline functions|توثيق الدوال المباشرة (inline functions)]].
inline fun <K, V> Map<out K, V>.any(predicate: (Entry<K, V>) -> Boolean): Boolean
==القيم المعادة==
</syntaxhighlight>يمكن استدعاء الدالة <code>any()‎</code>عبر قاموس (Map) دون معامل:<syntaxhighlight lang="kotlin">
نسخة تكرارية (iterable instance). (انظر شرح الدالة أعلاه لمزيدٍ من التفاصيل)
fun <K, V> Map<out K, V>.any(): Boolean
==أمثلة==
 
===استخدام الدالة <code>()asIterable</code> مع المصفوفات===
</syntaxhighlight>يُلاحَظ وجود الكلمة المفتاحية <code>inline</code> للدلالة على أن هذه الدالة مباشرة، وللمزيد من التفاصيل راجع [[Kotlin/inline functions|توثيق الدوال المباشرة (inline functions)]].
تعرِّف الشيفرة الآتية مصفوفةً باسم <code>array</code> مكونةً من أربعة أعداد باستخدام الدالة <code>()arrayOf</code>، ثم تنشئ عنصرًا تكراريًا باسم <code>iter</code> باستخدام الدالة <code>()asIterable</code> وذلك لاستخدامه في الحلقة التكرارية <code>[[Kotlin/control flow#.D8.AA.D8.B9.D8.A8.D9.8A.D8.B1 for|for]]</code>:<syntaxhighlight lang="kotlin">
 
== القيم المعادة ==
<code>true</code> أو <code>false</code>. (انظر شرح الدالة أعلاه لمزيد من التفاصيل)
 
== أمثلة ==
 
=== استخدام الدالة <code>()asIterable</code> على اللوائح دون تمرير مُعامل ===
تعرف الشيفرة الآتية لائحة (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 emptyList = emptyList<Int>()
    val array = arrayOf(6,7,8,9) // إنشاء مصفوفة
println(emptyList.any()) // false
    val iter = array.asIterable() // إنشاء عنصر تكراري
 
val nonEmptyList = listOf(1, 2, 3)
    for (i in iter)  
println(nonEmptyList.any()) // true
        print(i) // 6789
}
}
</syntaxhighlight>
</syntaxhighlight>
 
==انظر أيضًا==
=== ‎استخدام الدالة <code>()any</code> بتمرير دالة كمُعامل ===
*الدالة <code>[[Kotlin/collections/asList|asList()]]</code>‎: تعيد قائمةً تُغلّف المصفوفة الأصلية.
تعرف الشيفرة الآتيةدالة باسم <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">
*الدالة <code>[[Kotlin/collections/asSequence|asSequence()]]</code>‎: تعيد نسخةً من النوع <code>sequence</code> والتي تُغلّف المصفوفة الأصليّة وتعيد عناصرها عندما تُستخدَم في حلقات التكرار (مثل حلقة <code>[[Kotlin/control flow#.D8.AA.D8.B9.D8.A8.D9.8A.D8.B1 for|for]]</code>).
fun main(args: Array<String>) {
==مصادر==
val isEven: (Int) -> Boolean = { it % 2 == 0 }
*[https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/as-iterable.html صفحة الدالة asIterable()‎ في التوثيق الرسميّ للمكتبة القياسيّة في لغة Kotlin.]
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>
 
== انظر أيضًا ==
* <code>[[Kotlin/collections/all|all()]]</code>‎: تُعيد القيمة <code>true</code> إن كانت كل عناصر المجموعة (collection) التي استُدعيت عبرها تحقق العبارة المنطقية (predicate) المحددة، أو<code>false</code> خلاف ذلك.
 
== مصادر ==
* [https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/any.html الخاصيّة  any()‎ في التوثيق الرسميّ للمكتبة القياسيّة في لغة Kotlin.]
[[تصنيف:Kotlin]]
[[تصنيف:Kotlin]]
[[تصنيف:Kotlin Functions]]
[[تصنيف:Kotlin Function]]
[[تصنيف:Kotlin Collection]]

المراجعة الحالية بتاريخ 07:01، 8 سبتمبر 2018

تُنشِئ الدالة asIterable()‎نسخةً تكراريّةً (iterable instance) تُغلّف (wrap) المصفوفة الأصلية وتعيد عناصرَها عندما تُستخدَم في حلقات التكرار (مثل for).

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

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>

ويمكن استدعاء الدالة asIterable()‎عبر مجموعة (collection) لتُعيدها على شكل عنصر تكراريّ (iterable):

inline fun <T> Iterable<T>.asIterable(): Iterable<T>

كما ويمكن استدعاء الدالة asIterable()‎عبر عنصر map وستعيد نسخةً تكراريةً (iterable instance) تُغلّف عنصر map الأصلي وتعيد مداخله (entries) عندما تُستخدم في حلقات التكرار (مثل حلقة for):

inline fun <K, V> Map<out K, V>.asIterable(): Iterable<Entry<K, V>>

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

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

نسخة تكرارية (iterable instance). (انظر شرح الدالة أعلاه لمزيدٍ من التفاصيل)

أمثلة

استخدام الدالة ()asIterable مع المصفوفات

تعرِّف الشيفرة الآتية مصفوفةً باسم array مكونةً من أربعة أعداد باستخدام الدالة ()arrayOf، ثم تنشئ عنصرًا تكراريًا باسم iter باستخدام الدالة ()asIterable وذلك لاستخدامه في الحلقة التكرارية for:

fun main(args: Array<String>) {
    val array = arrayOf(6,7,8,9)  // إنشاء مصفوفة
    val iter = array.asIterable() // إنشاء عنصر تكراري
 
    for (i in iter) 
        print(i) // 6789
}

انظر أيضًا

  • الدالة asList()‎: تعيد قائمةً تُغلّف المصفوفة الأصلية.
  • الدالة asSequence()‎: تعيد نسخةً من النوع sequence والتي تُغلّف المصفوفة الأصليّة وتعيد عناصرها عندما تُستخدَم في حلقات التكرار (مثل حلقة for).

مصادر