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

من موسوعة حسوب
اذهب إلى التنقل اذهب إلى البحث
ط
 
(3 مراجعات متوسطة بواسطة 3 مستخدمين غير معروضة)
سطر 1: سطر 1:
<noinclude>{{DISPLAYTITLE: الدالة <code>withIndex()‎</code> في لغة Kotlin}}</noinclude>
+
<noinclude>{{DISPLAYTITLE: الدالة <code>withIndex()‎</code> في Kotlin}}</noinclude>
تعيد الدالة<code>withIndex()‎</code> [[Kotlin/Iterable|مجموعة تكرارية]] خاملة (lazy Iterable) من القيم المُفهرسة لكل عنصر من عناصر  [[Kotlin/Array|المصفوفة]] أو [[Kotlin/Iterable|المجموعة التكرارية]]  التي استُدعيت عبرها، وفي حال استدعائها عبر  [[Kotlin/iterator|مُكرّر]] (<code>Iterator</code>)<nowiki/>  فستعيد [[Kotlin/iterator|مُكرّر]]<nowiki/>ا يغلّف كل عنصر مُنتج من ذلك [[Kotlin/iterator|المكرّر]] مع القيمة المُفهرسة.
+
<nowiki/><nowiki/>تعيد الدالة <code>withIndex()‎</code> [[Kotlin/Iterable|مجموعة تكرارية]] خاملة (lazy Iterable) من القيم المُفهرسة لكل عنصر من عناصر  [[Kotlin/Array|المصفوفة]] أو [[Kotlin/Iterable|المجموعة التكرارية]] التي استُدعيت معها، أو تعيد [[Kotlin/iterator|مُكرّرًا]] (iterator) يغلّف كل عنصر أنتجه [[Kotlin/iterator|المكرّر]] (Iterator) المستدعى مع الدالة مع القيمة المُفهرسة أي يعيد القيمة مع فهرسها.
 
==البنية العامة==
 
==البنية العامة==
يمكن استدعاء الدالة<code>withIndex()‎</code> عبر [[Kotlin/Array|المصفوفات]]:<syntaxhighlight lang="kotlin">
+
يمكن استدعاء الدالة <code>withIndex()‎</code> مع [[Kotlin/Array|المصفوفات]] أو [[Kotlin/Iterable|المجموعات التكرارية]] أو [[Kotlin/iterator|المكرِّرات]]:<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>>  
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|المجموعة التكرارية]] (iterable) المعطاة، أو يعاد [[Kotlin/iterator|مُكرّر]] يغلّف كل عنصر أنتجه [[Kotlin/iterator|المكرّر]] (iterator) إن أعطي مع القيمة المُفهرسة.
 
==أمثلة==
 
==أمثلة==
===استخدام الدالة <code>()withIndex</code> مع المصفوفات===
+
استعمال الدالة <code>()withIndex</code> مع مكرِّر وحلقة تكرارية (الحلقة <code>[[Kotlin/control flow#.D8.AA.D8.B9.D8.A8.D9.8A.D8.B1 for|for]]</code>):<syntaxhighlight lang="kotlin">
تعرّف الشيفرة الآتية  <nowiki/>[[Kotlin/Array|مصفوفة]] باسم <code>array</code>  مكونة من ثلاثة [[Kotlin/Pair|أزواج]] باستخدام الدالة <code>()arrayOf‎</code>،<nowiki/> ثم تستخدم الدالة<code>()withIndex</code> على <code>array</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 lang="text">
 +
The element at 0 is a
 +
The element at 1 is b
 +
The element at 2 is c
 +
 
</syntaxhighlight>
 
</syntaxhighlight>
==أنظر أيضًا==
+
==انظر أيضًا==
 
*<code>[[Kotlin/collections/union|union()]]</code>‎ : تعيد مجموعة من النوع Set تضم جميع عناصر <nowiki/>[[Kotlin/Array|المصفوفة]]  أو المجموعة التكرارية  التي استُدعيت عبرها والمجموعة التكرارية المُمرّرة.
 
*<code>[[Kotlin/collections/union|union()]]</code>‎ : تعيد مجموعة من النوع Set تضم جميع عناصر <nowiki/>[[Kotlin/Array|المصفوفة]]  أو المجموعة التكرارية  التي استُدعيت عبرها والمجموعة التكرارية المُمرّرة.
 
*<code>[[Kotlin/collections/toByteArray|toByteArray()]]</code>‎ : تعيد <nowiki/>[[Kotlin/Array|مصفوفة]] من النوع <code>ByteArray</code>تضم جميع عناصر <nowiki/>[[Kotlin/Array|المصفوفة العامة]] (أي من النوع <code>Array<Byte>‎</code>) أو <nowiki/>[[Kotlin/collections|المجموعة]]  التي استُدعيت عبرها.
 
*<code>[[Kotlin/collections/toByteArray|toByteArray()]]</code>‎ : تعيد <nowiki/>[[Kotlin/Array|مصفوفة]] من النوع <code>ByteArray</code>تضم جميع عناصر <nowiki/>[[Kotlin/Array|المصفوفة العامة]] (أي من النوع <code>Array<Byte>‎</code>) أو <nowiki/>[[Kotlin/collections|المجموعة]]  التي استُدعيت عبرها.
 
*<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 Function]]
 +
[[تصنيف:Kotlin Collection]]

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

تعيد الدالة withIndex()‎ مجموعة تكرارية خاملة (lazy Iterable) من القيم المُفهرسة لكل عنصر من عناصر المصفوفة أو المجموعة التكرارية التي استُدعيت معها، أو تعيد مُكرّرًا (iterator) يغلّف كل عنصر أنتجه المكرّر (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>> 

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

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

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

تعاد مجموعة تكرارية خاملة (lazy Iterable) من القيم المُفهرسة لكل عنصر من عناصر المصفوفة أو المجموعة التكرارية (iterable) المعطاة، أو يعاد مُكرّر يغلّف كل عنصر أنتجه المكرّر (iterator) إن أعطي مع القيمة المُفهرسة.

أمثلة

استعمال الدالة ()withIndex مع مكرِّر وحلقة تكرارية (الحلقة for):

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

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

ناتج تنفيذ الشيفرة السابقة هو:

The element at 0 is a
The element at 1 is b
The element at 2 is c

انظر أيضًا

مصادر