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

من موسوعة حسوب
اذهب إلى التنقل اذهب إلى البحث
سطر 3: سطر 3:
 
==البنية العامة==
 
==البنية العامة==
 
يمكن استدعاء الدالة<code>withIndex()‎</code>  عبر [[Kotlin/Array|المصفوفات]]:<syntaxhighlight lang="kotlin">
 
يمكن استدعاء الدالة<code>withIndex()‎</code>  عبر [[Kotlin/Array|المصفوفات]]:<syntaxhighlight lang="kotlin">
fun <T, R> Array<out Pair<T, R>>.unzip(): Pair<List<T>, List<R>>  
+
fun <T> Array<out T>.withIndex(): Iterable<IndexedValue<T>>
 +
fun ByteArray.withIndex(): Iterable<IndexedValue<Byte>>
 +
fun ShortArray.withIndex(): Iterable<IndexedValue<Short>>
 +
fun IntArray.withIndex(): Iterable<IndexedValue<Int>>
 +
fun LongArray.withIndex(): Iterable<IndexedValue<Long>>
 +
fun FloatArray.withIndex(): Iterable<IndexedValue<Float>>
 +
fun DoubleArray.withIndex(): Iterable<IndexedValue<Double>>
 +
fun BooleanArray.withIndex(): Iterable<IndexedValue<Boolean>>
 +
fun CharArray.withIndex(): Iterable<IndexedValue<Char>>
 +
</syntaxhighlight>يمكن استدعاء الدالة<code>withIndex()‎</code>  عبر  [[Kotlin/Iterable|المجموعات التكرارية]]:<syntaxhighlight lang="kotlin">
 +
fun <T> Iterable<T>.withIndex(): Iterable<IndexedValue<T>>  
  
</syntaxhighlight>يمكن استدعاء الدالة<code>withIndex()‎</code>  عبر [[Kotlin/Iterable|المجموعات التكرارية]]:<syntaxhighlight lang="kotlin">
+
</syntaxhighlight>يمكن استدعاء الدالة<code>withIndex()‎</code>  عبر   [[Kotlin/iterator|مُكرّر]] (<code>Iterator</code>):<syntaxhighlight lang="kotlin">
fun <T, R> Iterable<Pair<T, R>>.unzip(): Pair<List<T>, List<R>>  
+
fun <T> Iterator<T>.withIndex(): Iterator<IndexedValue<T>>  
  
 
</syntaxhighlight>
 
</syntaxhighlight>
 
==القيمة المُعادة==
 
==القيمة المُعادة==
[[Kotlin/Pair|زوج]] مكون من [[Kotlin/List|لائحتين]]، حيث [[Kotlin/List|اللائحة]] الأولي مكونة من العناصر الأولى من كل زوج من [[Kotlin/Array|المصفوفة]] أو [[Kotlin/Iterable|المجموعة التكرارية]]  التي استُدعيت عبرها،  و<nowiki/>[[Kotlin/List|اللائحة]] الثانية مكونة من العناصر الثانية من كل زوج من [[Kotlin/Array|المصفوفة]] أو [[Kotlin/Iterable|المجموعة التكرارية]] التي استُدعيت عبرها.
+
[[Kotlin/Iterable|مجموعة تكرارية]] خاملة (lazy Iterable) من القيم المُفهرسة لكل عنصر من عناصر  [[Kotlin/Array|المصفوفة]] أو [[Kotlin/Iterable|المجموعة التكرارية]]  التي استُدعيت عبرها، وفي حال استدعائها عبر [[Kotlin/iterator|مُكرّر]] (<code>Iterator</code>) فستعيد [[Kotlin/iterator|مُكرّر]]<nowiki/>ا يغلّف كل عنصر مُنتج من ذلك [[Kotlin/iterator|المكرّر]] مع القيمة المُفهرسة.
 
==أمثلة==
 
==أمثلة==
===استخدام الدالة <code>()withIndex</code> مع المصفوفات===
+
===استخدام الدالة <code>()withIndex</code> مع المُكرِّرات===
تعرّف الشيفرة الآتية  <nowiki/>[[Kotlin/Array|مصفوفة]] باسم <code>array</code>  مكونة من ثلاثة [[Kotlin/Pair|أزواج]] باستخدام الدالة <code>()arrayOf‎</code>،<nowiki/> ثم تستخدم الدالة<code>()withIndex</code> على <code>array</code>، ثم تطبع الناتج:<syntaxhighlight lang="kotlin">
+
تعرّف الشيفرة الآتية  <nowiki/>[[Kotlin/iterator|مُكرِّرا]]<nowiki/> باسم <code>iterator</code>،<nowiki/> ثم تستخدم الدالة<code>()withIndex</code> على <code>iterator</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>) {
 
fun main(args: Array<String>) {
val array = arrayOf(1 to 'a', 2 to 'b', 3 to 'c')
+
val iterator = ('a'..'c').iterator()
   
+
 
println(array.unzip()) // ([1, 2, 3], [a, b, c])
+
for ((index, value) in iterator.withIndex()) {
 
+
    println("The element at $index is $value")
 +
}
 
}
 
}
 
</syntaxhighlight>
 
</syntaxhighlight>
سطر 26: سطر 37:
 
*<code>[[Kotlin/collections/toDoubleArray|toDoubleArray()]]</code>‎ : تعيد [[Kotlin/Array|مصفوفة]] من  النوع <code>DoubleArray</code>تضم جميع عناصر [[Kotlin/Array|المصفوفة العامة]] (أي من النوع <code>Array<Double>‎</code>) أو  [[Kotlin/collections|المجموعة]]  التي استُدعيت عبرها.
 
*<code>[[Kotlin/collections/toDoubleArray|toDoubleArray()]]</code>‎ : تعيد [[Kotlin/Array|مصفوفة]] من  النوع <code>DoubleArray</code>تضم جميع عناصر [[Kotlin/Array|المصفوفة العامة]] (أي من النوع <code>Array<Double>‎</code>) أو  [[Kotlin/collections|المجموعة]]  التي استُدعيت عبرها.
 
==مصادر==
 
==مصادر==
* [https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/unzip.html الدالة  withIndex()‎ في التوثيق الرسميّ للمكتبة القياسيّة في لغة Kotlin.]
+
* [https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/with-index.html الدالة  withIndex()‎ في التوثيق الرسميّ للمكتبة القياسيّة في لغة Kotlin.]
 
[[تصنيف:Kotlin]]
 
[[تصنيف:Kotlin]]
 
[[تصنيف:Kotlin Functions]]
 
[[تصنيف:Kotlin Functions]]

مراجعة 14:11، 24 يونيو 2018

تعيد الدالةwithIndex()‎ مجموعة تكرارية خاملة (lazy Iterable) من القيم المُفهرسة لكل عنصر من عناصر المصفوفة أو المجموعة التكرارية  التي استُدعيت عبرها، وفي حال استدعائها عبر مُكرّر (Iterator) فستعيد مُكرّرا يغلّف كل عنصر مُنتج من ذلك المكرّر مع القيمة المُفهرسة.

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

يمكن استدعاء الدالةwithIndex()‎ عبر المصفوفات:

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

يمكن استدعاء الدالةwithIndex()‎ عبر المجموعات التكرارية:

fun <T> Iterable<T>.withIndex(): Iterable<IndexedValue<T>>

يمكن استدعاء الدالةwithIndex()‎ عبر مُكرّر (Iterator):

fun <T> Iterator<T>.withIndex(): Iterator<IndexedValue<T>>

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

مجموعة تكرارية خاملة (lazy Iterable) من القيم المُفهرسة لكل عنصر من عناصر المصفوفة أو المجموعة التكرارية  التي استُدعيت عبرها، وفي حال استدعائها عبر مُكرّر (Iterator) فستعيد مُكرّرا يغلّف كل عنصر مُنتج من ذلك المكرّر مع القيمة المُفهرسة.

أمثلة

استخدام الدالة ()withIndex مع المُكرِّرات

تعرّف الشيفرة الآتية  مُكرِّرا باسم iterator، ثم تستخدم الدالة()withIndex على iterator في الحلقة for، ثم تطبع الناتج:

fun main(args: Array<String>) {
val iterator = ('a'..'c').iterator()

for ((index, value) in iterator.withIndex()) {
    println("The element at $index is $value")
} 
}

أنظر أيضًا

مصادر