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

من موسوعة حسوب
اذهب إلى التنقل اذهب إلى البحث
(أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE: الدالة <code>asSequence()‎</code> في لغة Kotlin}}</noinclude>تُنشئ الدالة <code>asSequence()‎</code>نسخة تكر...')
 
سطر 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> نسخة من الواجهة <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">
+
في حال استدعاء الدالة <code>asSequence()‎</code>عبر مصفوفة فستعيد نسخة من الواجهة <code>Sequence</code> والتي تُغلّف المصفوفة التي استُدعيت عبرها وتعيد عناصرها عندما تُستخدم في حلقات التكرار (مثل <code>[[Kotlin/control flow#.D8.AA.D8.B9.D8.A8.D9.8A.D8.B1 for|for]]</code>):<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>عبر قاموس ([[kotln/map|Map]]) وستعيد نسخة من الواجهة <code>Sequence</code> والتي تُغلّف القاموس الذي استُدعيت عبره وتعيد مداخله (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>()asSequence</code> مع المصفوفات===
تعرف الشيفرة الآتية مصفوفة باسم <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">
+
تعرف الشيفرة الآتية مصفوفة باسم <code>array</code> مكونة من ثلاثة أحرف باستخدام الدالة <code>()arrayOf</code>، ثم تنشئ نسخة من النوع <code>Sequence</code> باسم <code>sequence</code> باستخدام الدالة <code>()asSequence</code>ثم تضم عناصر <code>sequence</code> عبر الدالة <code>[[Kotlin/collections/joinToString|joinToString()‎]]</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>()asSequence</code> مع اللوائح===
 +
تعرف الشيفرة الآتية لائحة باسم <code>collection</code> مكونة من ثلاثة أحرف باستخدام الدالة <code>()listOf</code>، ثم تنشئ نسخة من النوع <code>Sequence</code> باسم <code>sequence</code> باستخدام الدالة <code>()asSequence</code>ثم تضم عناصر <code>sequence</code> عبر الدالة <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>‎: تعيد لائحة والتي تُغلّف المصفوفة الاصلية.
*<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) والتي تُغلّف المصفوفة الاصلية وتعيد عناصرها عندما تُستخدم في حلقات التكرار (مثل<code>[[Kotlin/control flow#.D8.AA.D8.B9.D8.A8.D9.8A.D8.B1 for|for]]</code>).
 +
 
 
==مصادر==
 
==مصادر==
 
<span> </span>
 
<span> </span>
*[https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/as-iterable.html الدالة  asIterable()‎ في التوثيق الرسميّ للمكتبة القياسيّة في لغة Kotlin.]
+
*[https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/as-sequence.html الدالة  asSequence()‎ في التوثيق الرسميّ للمكتبة القياسيّة في لغة Kotlin.]
 
[[تصنيف:Kotlin]]
 
[[تصنيف:Kotlin]]
 
[[تصنيف:Kotlin Functions]]
 
[[تصنيف:Kotlin Functions]]

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

تُنشئ الدالة asSequence()‎ نسخة من الواجهة Sequence والتي تُغلّف المصفوفة الاصلية وتعيد عناصرها عندما تُستخدم في حلقات التكرار (مثل for).

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

في حال استدعاء الدالة asSequence()‎عبر مصفوفة فستعيد نسخة من الواجهة 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 والتي تُغلّف القاموس الذي استُدعيت عبره وتعيد مداخله (entries) عندما تُستخدم في حلقات التكرار (مثل for):

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

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

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

أمثلة

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

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

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

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

استخدام الدالة ()asSequence مع اللوائح

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

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

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

انظر أيضًا

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

مصادر