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

من موسوعة حسوب
اذهب إلى التنقل اذهب إلى البحث
(أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE: الدالة <code>asSequence()‎</code> في لغة Kotlin}}</noinclude>تُنشئ الدالة <code>asSequence()‎</code>نسخة تكر...')
 
ط
 
(3 مراجعات متوسطة بواسطة 3 مستخدمين غير معروضة)
سطر 1: سطر 1:
<noinclude>{{DISPLAYTITLE: الدالة <code>asSequence()‎</code> في لغة Kotlin}}</noinclude>تُنشئ الدالة <code>asSequence()‎</code>نسخة تكرارية (Iterable instance) والتي تُغلّف المصفوفة الاصلية وتعيد عناصرها عندما تُستخدم في حلقات التكرار (مثل <code>[[Kotlin/control flow#.D8.AA.D8.B9.D8.A8.D9.8A.D8.B1 for|for]]</code>).
+
<noinclude>{{DISPLAYTITLE: الدالة <code>asSequence()‎</code> في Kotlin}}</noinclude>تُنشِئ الدالة <code>asSequence()‎</code> نسخةً (instance) من النوع <code>sequence</code> والتي تُغلّف المصفوفة الأصلية وتعيد عناصرها عندما تُستخدَم في حلقات التكرار (مثل حلقة <code>[[Kotlin/control flow#.D8.AA.D8.B9.D8.A8.D9.8A.D8.B1 for|for]]</code>).
 
==البنية العامة==
 
==البنية العامة==
في حال استدعاء الدالة <code>asSequence()‎</code>عبر مصفوفة فستعيد نسخة تكرارية (Iterable instance) والتي تُغلّف المصفوفة التي استُدعيت عبرها وتعيد عناصرها عندما تُستخدم في حلقات التكرار (مثل <code>[[Kotlin/control flow#.D8.AA.D8.B9.D8.A8.D9.8A.D8.B1 for|for]]</code>):<syntaxhighlight lang="kotlin">
+
تختلف بحسب نوع المصفوفة التي تُستدعَى عبرها:<syntaxhighlight lang="kotlin">
fun <T> Array<out T>.asIterable(): Iterable<T>
+
fun <T> Array<out T>.asSequence(): Sequence<T>  
fun ByteArray.asIterable(): Iterable<Byte>  
+
fun ByteArray.asSequence(): Sequence<Byte>  
fun ShortArray.asIterable(): Iterable<Short>  
+
fun ShortArray.asSequence(): Sequence<Short>  
fun IntArray.asIterable(): Iterable<Int>  
+
fun IntArray.asSequence(): Sequence<Int>  
fun LongArray.asIterable(): Iterable<Long>
+
fun LongArray.asSequence(): Sequence<Long>  
fun FloatArray.asIterable(): Iterable<Float>  
+
fun FloatArray.asSequence(): Sequence<Float>  
fun DoubleArray.asIterable(): Iterable<Double>  
+
fun DoubleArray.asSequence(): Sequence<Double>  
fun BooleanArray.asIterable(): Iterable<Boolean>  
+
fun BooleanArray.asSequence(): Sequence<Boolean>  
fun CharArray.asIterable(): Iterable<Char>  
+
fun CharArray.asSequence(): Sequence<Char>
</syntaxhighlight>يمكن استدعاء الدالة <code>asSequence()‎</code>عبر مجموعة (collection) وستُعيدها على شكل مُكرّر (iterable):<syntaxhighlight lang="kotlin">
+
</syntaxhighlight>ويمكن استدعاء الدالة <code>asSequence()‎</code>عبر مجموعة ([[Kotlin/collections|collection]]) وستعيد نسخةً من النوع <code>sequence</code> والتي تُغلّف المجموعة التي استُدعيت عبرها وتعيد عناصرها عندما تُستخدَم في حلقات التكرار (مثل <code>[[Kotlin/control flow#.D8.AA.D8.B9.D8.A8.D9.8A.D8.B1 for|for]]</code>):<syntaxhighlight lang="kotlin">
inline fun <T> Iterable<T>.asIterable(): Iterable<T>
+
fun <T> Iterable<T>.asSequence(): Sequence<T>  
 
+
</syntaxhighlight>كما ويمكن استدعاء الدالة <code>asSequence()‎</code>عبر عنصر map وستعيد نسخةً من النوع <code>sequence</code> والتي تُغلّف عنصر map الذي استُدعيت عبره وتعيد مداخله (entries) عندما تُستخدم في حلقات التكرار (مثل <code>[[Kotlin/control flow#.D8.AA.D8.B9.D8.A8.D9.8A.D8.B1 for|for]]</code>):<syntaxhighlight lang="kotlin">
</syntaxhighlight>يمكن استدعاء الدالة <code>asSequence()‎</code>عبر قاموس (Map) وستعيد نسخة تكرارية (Iterable instance) والتي تُغلّف القاموس الاصلي وتعيد مداخله (entries) عندما تُستخدم في حلقات التكرار (مثل <code>[[Kotlin/control flow#.D8.AA.D8.B9.D8.A8.D9.8A.D8.B1 for|for]]</code>)::<syntaxhighlight lang="kotlin">
+
fun <K, V> Map<out K, V>.asSequence(): Sequence<Entry<K, V>>  
inline fun <K, V> Map<out K, V>.asIterable(): Iterable<Entry<K, V>>
+
</syntaxhighlight>
 
 
</syntaxhighlight>يُلاحَظ وجود الكلمة المفتاحية <code>inline</code> للدلالة على أن هذه الدالة مباشرة، وللمزيد من التفاصيل راجع [[Kotlin/inline functions|توثيق الدوال المباشرة (inline functions)]].
 
 
==القيم المعادة==
 
==القيم المعادة==
نسخة تكرارية (Iterable instance). (انظر شرح الدالة أعلاه لمزيد من التفاصيل)
+
تُعاد نسخة من النوع <code>sequence</code> (انظر شرح الدالة أعلاه لمزيدٍ من التفاصيل).
 
==أمثلة==
 
==أمثلة==
===استخدام الدالة <code>()asSequence</code> مع المصفوفات===
+
تعرِّف الشيفرة الآتية مصفوفة محارف باسم <code>array</code> مكونة من ثلاثة أحرف باستخدام الدالة <code>()arrayOf</code>، ثم تنشئ نسخةً من النوع <code>sequence</code> باسم <code>sequence</code> باستخدام الدالة <code>()asSequence</code> وتضم عناصر <code>sequence</code>  لسلسلةٍ نصيةٍ (string) عبر الدالة <code>[[Kotlin/collections/joinToString|joinToString()‎]]</code>  ثم تطبع الناتج:<syntaxhighlight lang="kotlin">
تعرف الشيفرة الآتية مصفوفة باسم <code>array</code> مكونة من أربعة أعداد باستخدام الدالة <code>()arrayOf</code>، ثم تنشئ مُكرّرا باسم <code>iter</code> باستخدام الدالة <code>()asSequence</code>ثم تستخدم ذلك المكرر في حلقة تكرارية <code>[[Kotlin/control flow#.D8.AA.D8.B9.D8.A8.D9.8A.D8.B1 for|for]]</code>:<syntaxhighlight lang="kotlin">
+
fun main(args: Array<String>) {
 +
    val array = arrayOf('a', 'b', 'c')
 +
    val sequence = array.asSequence()
 +
 
 +
    println(sequence.joinToString()) // a, b, c
 +
}
 +
</syntaxhighlight>
 +
تعرف الشيفرة الآتية قائمةً باسم <code>collection</code> مكونة من ثلاثة أحرف باستخدام الدالة <code>()listOf</code>، ثم تنشِئ نسخةً من النوع <code>sequence</code> باسم <code>sequence</code> وذلك باستخدام الدالة<code>()asSequence</code> ثم تضم عناصر <code>sequence</code> لسلسلةٍ نصيةٍ (string) عبر الدالة <code>[[Kotlin/collections/joinToString|joinToString()‎]]</code> ثم تطبع الناتج:<syntaxhighlight lang="kotlin">
 
fun main(args: Array<String>) {
 
fun main(args: Array<String>) {
val array = arrayOf(6,7,8,9) // انشاء مصفوفة
+
    val collection = listOf('a', 'b', 'c')
val iter = array.asIterable() // انشاء مكرر
+
    val sequence = collection.asSequence()
+
 
for (i in iter) print(i) // 6789
+
    println(sequence.joinToString()) // a, b, c
 
}
 
}
 
</syntaxhighlight>
 
</syntaxhighlight>
 
==انظر أيضًا==
 
==انظر أيضًا==
*<code>[[Kotlin/collections/asList|asList()]]</code>‎: تعيد لائحة والتي تُغلّف المصفوفة الاصلية.
+
*الدالة <code>[[Kotlin/collections/asList|asList()]]</code>‎: تعيد قائمةً تُغلّف (wrap) المصفوفة الأصلية التي استُدعيت عبرها.
*<code>[[Kotlin/collections/asSequence|asSequence()]]</code>‎: تعيد نسخة من النوع Sequence  والتي تُغلّف المصفوفة الاصلية وتعيد عناصرها عندما تطبق تستخدم في حلقات التكرار (مثل <code>[[Kotlin/control flow#.D8.AA.D8.B9.D8.A8.D9.8A.D8.B1 for|for]]</code>).
+
 
 +
* الدالة <code>[[Kotlin/collections/asIterable|asIterable()]]</code>‎: تُعيد نسخةً تكراريّةً (iterable instance) تُغلّف (wrap) المصفوفة الأصلية وتعيد عناصرَها عندما تُستخدَم في حلقات التكرار (مثل <code>[[Kotlin/control flow#.D8.AA.D8.B9.D8.A8.D9.8A.D8.B1 for|for]]</code>).
 +
 
 
==مصادر==
 
==مصادر==
<span> </span>
+
*[https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/as-sequence.html صفحة الدالة asSequence()‎ في التوثيق الرسميّ للمكتبة القياسيّة في لغة Kotlin.]
*[https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/as-iterable.html الدالة  asIterable()‎ في التوثيق الرسميّ للمكتبة القياسيّة في لغة Kotlin.]
 
 
[[تصنيف:Kotlin]]
 
[[تصنيف:Kotlin]]
[[تصنيف:Kotlin Functions]]
+
[[تصنيف:Kotlin Function]]
 +
[[تصنيف:Kotlin Collection]]

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

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

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

تختلف بحسب نوع المصفوفة التي تُستدعَى عبرها:

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

ويمكن استدعاء الدالة asSequence()‎عبر مجموعة (collection) وستعيد نسخةً من النوع sequence والتي تُغلّف المجموعة التي استُدعيت عبرها وتعيد عناصرها عندما تُستخدَم في حلقات التكرار (مثل for):

fun <T> Iterable<T>.asSequence(): Sequence<T>

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

fun <K, V> Map<out K, V>.asSequence(): Sequence<Entry<K, V>>

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

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

أمثلة

تعرِّف الشيفرة الآتية مصفوفة محارف باسم array مكونة من ثلاثة أحرف باستخدام الدالة ()arrayOf، ثم تنشئ نسخةً من النوع sequence باسم sequence باستخدام الدالة ()asSequence وتضم عناصر sequence لسلسلةٍ نصيةٍ (string) عبر الدالة joinToString()‎ ثم تطبع الناتج:

fun main(args: Array<String>) {
    val array = arrayOf('a', 'b', 'c')
    val sequence = array.asSequence()

    println(sequence.joinToString()) // a, b, c
}

تعرف الشيفرة الآتية قائمةً باسم collection مكونة من ثلاثة أحرف باستخدام الدالة ()listOf، ثم تنشِئ نسخةً من النوع sequence باسم sequence وذلك باستخدام الدالة()asSequence ثم تضم عناصر sequence لسلسلةٍ نصيةٍ (string) عبر الدالة joinToString()‎ ثم تطبع الناتج:

fun main(args: Array<String>) {
    val collection = listOf('a', 'b', 'c')
    val sequence = collection.asSequence()

    println(sequence.joinToString()) // a, b, c
}

انظر أيضًا

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

مصادر