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

من موسوعة حسوب
لا ملخص تعديل
لا ملخص تعديل
سطر 1: سطر 1:
يختلف سلوك الدالة<code>zip()‎</code> بحسب إمضائها، أنظر الفقرة البنية العامة لأجل التفاصيل.  
يختلف سلوك الدالة<code>zip()‎</code> بحسب إمضائها، أنظر فقرة [[Kotlin/collections/zip#.D8.A7.D9.84.D8.A8.D9.86.D9.8A.D8.A9 .D8.A7.D9.84.D8.B9.D8.A7.D9.85.D8.A9|البنية العامة]] لأجل التفاصيل.  
==البنية العامة==
==البنية العامة==
<syntaxhighlight lang="kotlin">
<syntaxhighlight lang="kotlin">
سطر 52: سطر 52:
): List<Pair<Char, Char>>
): List<Pair<Char, Char>>


</syntaxhighlight>في حال استدعاء الدالة<code>zip()‎</code>  عبر [[Kotlin/Array|مصفوفة]] مع تمرير [[Kotlin/Array|مصفوفة]] كوسيط فستعيد [[Kotlin/List|لائحة]] تتضمّن أزواج مكونة من عناصر  [[Kotlin/Array|المصفوفة]] التي استُدعيت عبرها وعناصر [[Kotlin/Array|المصفوفة]] المُمرّرة بنفس الفهرس، طول [[Kotlin/List|اللائحة]] المعادة يساوي طول أٌقصرهما.<syntaxhighlight lang="kotlin">
</syntaxhighlight>في حال استدعاء الدالة<code>zip()‎</code>  عبر [[Kotlin/Array|مصفوفة]] مع تمرير [[Kotlin/Array|مصفوفة]] كوسيط فستعيد [[Kotlin/List|لائحة]] تتضمّن أزواجا مكونة من عناصر  [[Kotlin/Array|المصفوفة]] التي استُدعيت عبرها وعناصر [[Kotlin/Array|المصفوفة]] المُمرّرة بنفس الفهرس، طول [[Kotlin/List|اللائحة]] المعادة يساوي طول أٌقصرهما.<syntaxhighlight lang="kotlin">
infix fun <T, R> Array<out T>.zip(
infix fun <T, R> Array<out T>.zip(
     other: Iterable<R>
     other: Iterable<R>
سطر 81: سطر 81:
): List<Pair<Char, R>>  
): List<Pair<Char, R>>  


</syntaxhighlight>في حال استدعاء الدالة<code>zip()‎</code>  عبر [[Kotlin/Array|مصفوفة]]  مع تمرير [[Kotlin/Iterable|مجموعة تكرارية]] كوسيط فستعيد [[Kotlin/List|لائحة]] تتضمّن أزواج مكونة من عناصر  [[Kotlin/Array|المصفوفة]] التي استُدعيت عبرها وعناصر [[Kotlin/Iterable|المجموعة التكرارية]]  المُمرّرة بنفس الفهرس، طول [[Kotlin/List|اللائحة]] المعادة يساوي طول أٌقصرهما.<syntaxhighlight lang="kotlin">
</syntaxhighlight>في حال استدعاء الدالة<code>zip()‎</code>  عبر [[Kotlin/Array|مصفوفة]]  مع تمرير [[Kotlin/Iterable|مجموعة تكرارية]] كوسيط فستعيد [[Kotlin/List|لائحة]] تتضمّن أزواجا مكونة من عناصر  [[Kotlin/Array|المصفوفة]] التي استُدعيت عبرها وعناصر [[Kotlin/Iterable|المجموعة التكرارية]]  المُمرّرة بنفس الفهرس، طول [[Kotlin/List|اللائحة]] المعادة يساوي طول أٌقصرهما.<syntaxhighlight lang="kotlin">
infix fun <T, R> Iterable<T>.zip(
infix fun <T, R> Iterable<T>.zip(
     other: Array<out R>
     other: Array<out R>
): List<Pair<T, R>>
): List<Pair<T, R>>
</syntaxhighlight>في حال استدعاء الدالة<code>zip()‎</code>  عبر [[Kotlin/Iterable|مجموعة تكرارية]]  مع تمرير [[Kotlin/Array|مصفوفة]] كوسيط فستعيد [[Kotlin/List|لائحة]] تتضمّن أزواج مكونة من عناصر  [[Kotlin/Array|المصفوفة]] التي استُدعيت عبرها وعناصر [[Kotlin/Iterable|المجموعة التكرارية]]  المُمرّرة بنفس الفهرس، طول [[Kotlin/List|اللائحة]] المعادة يساوي طول أٌقصرهما.<syntaxhighlight lang="kotlin">
</syntaxhighlight>في حال استدعاء الدالة<code>zip()‎</code>  عبر [[Kotlin/Iterable|مجموعة تكرارية]]  مع تمرير [[Kotlin/Array|مصفوفة]] كوسيط فستعيد [[Kotlin/List|لائحة]] تتضمّن أزواجًا مكونة من عناصر  [[Kotlin/Array|المصفوفة]] التي استُدعيت عبرها وعناصر [[Kotlin/Iterable|المجموعة التكرارية]]  المُمرّرة بنفس الفهرس، طول [[Kotlin/List|اللائحة]] المعادة يساوي طول أٌقصرهما.<syntaxhighlight lang="kotlin">
infix fun <T, R> Iterable<T>.zip(
infix fun <T, R> Iterable<T>.zip(
     other: Iterable<R>
     other: Iterable<R>
): List<Pair<T, R>>  
): List<Pair<T, R>>  
</syntaxhighlight>في حال استدعاء الدالة<code>zip()‎</code>  عبر [[Kotlin/Iterable|مجموعة تكرارية]]  مع تمرير [[Kotlin/Iterable|مجموعة تكرارية]] كوسيط فستعيد [[Kotlin/List|لائحة]] تتضمّن أزواج مكونة من عناصر  [[Kotlin/Iterable|المجموعة التكرارية]] التي استُدعيت عبرها وعناصر [[Kotlin/Iterable|المجموعة التكرارية]]  المُمرّرة بنفس الفهرس، طول [[Kotlin/List|اللائحة]] المعادة يساوي طول أٌقصرهما.<syntaxhighlight lang="kotlin">
</syntaxhighlight>في حال استدعاء الدالة<code>zip()‎</code>  عبر [[Kotlin/Iterable|مجموعة تكرارية]]  مع تمرير [[Kotlin/Iterable|مجموعة تكرارية]] كوسيط فستعيد [[Kotlin/List|لائحة]] تتضمّن أزواجا مكونة من عناصر  [[Kotlin/Iterable|المجموعة التكرارية]] التي استُدعيت عبرها وعناصر [[Kotlin/Iterable|المجموعة التكرارية]]  المُمرّرة بنفس الفهرس، طول [[Kotlin/List|اللائحة]] المعادة يساوي طول أٌقصرهما.<syntaxhighlight lang="kotlin">
inline fun <T, R, V> Array<out T>.zip(
inline fun <T, R, V> Array<out T>.zip(
     other: Array<out R>,  
     other: Array<out R>,  
سطر 159: سطر 159:
): List<V>  
): List<V>  


</syntaxhighlight>في حال استدعاء الدالة<code>zip()‎</code>  عبر [[Kotlin/Array|مصفوفة]] مع تمرير [[Kotlin/Array|مصفوفة]] و دالة <code>transform</code> كوسيطين فستعيد [[Kotlin/List|لائحة]] تتضمّن أزواج مكونة من عناصر  [[Kotlin/Array|المصفوفة]] التي استُدعيت عبرها وعناصر [[Kotlin/Array|المصفوفة]] المُمرّرة بنفس الفهرس باستخدام الدالة <code>transform</code> المُمرّرة مُطبّقة على كل زوج من العناصر، طول [[Kotlin/List|اللائحة]] المعادة يساوي طول أٌقصرهما.<syntaxhighlight lang="kotlin">
</syntaxhighlight>في حال استدعاء الدالة<code>zip()‎</code>  عبر [[Kotlin/Array|مصفوفة]] مع تمرير [[Kotlin/Array|مصفوفة]] و دالة <code>transform</code> كوسيطين فستعيد [[Kotlin/List|لائحة]] تتضمّن أزواجا مكونة من عناصر  [[Kotlin/Array|المصفوفة]] التي استُدعيت عبرها وعناصر [[Kotlin/Array|المصفوفة]] المُمرّرة بنفس الفهرس باستخدام الدالة <code>transform</code> المُمرّرة مُطبّقة على كل زوج من العناصر، طول [[Kotlin/List|اللائحة]] المعادة يساوي طول أٌقصرهما.<syntaxhighlight lang="kotlin">
inline fun <T, R, V> Array<out T>.zip(
inline fun <T, R, V> Array<out T>.zip(
     other: Iterable<R>,  
     other: Iterable<R>,  
سطر 197: سطر 197:
): List<V>  
): List<V>  


</syntaxhighlight>في حال استدعاء الدالة<code>zip()‎</code>  عبر [[Kotlin/Array|مصفوفة]] مع تمرير [[Kotlin/Iterable|مجموعة تكرارية]] و دالة <code>transform</code> كوسيطين فستعيد [[Kotlin/List|لائحة]] تتضمّن أزواج مكونة من عناصر  [[Kotlin/Array|المصفوفة]] التي استُدعيت عبرها وعناصر [[Kotlin/Iterable|المجموعة التكرارية]] المُمرّرة بنفس الفهرس باستخدام الدالة <code>transform</code> المُمرّرة مُطبّقة على كل زوج من العناصر، طول [[Kotlin/List|اللائحة]] المعادة يساوي طول أٌقصرهما.<syntaxhighlight lang="kotlin">
</syntaxhighlight>في حال استدعاء الدالة<code>zip()‎</code>  عبر [[Kotlin/Array|مصفوفة]] مع تمرير [[Kotlin/Iterable|مجموعة تكرارية]] و دالة <code>transform</code> كوسيطين فستعيد [[Kotlin/List|لائحة]] تتضمّن أزواجا مكونة من عناصر  [[Kotlin/Array|المصفوفة]] التي استُدعيت عبرها وعناصر [[Kotlin/Iterable|المجموعة التكرارية]] المُمرّرة بنفس الفهرس باستخدام الدالة <code>transform</code> المُمرّرة مُطبّقة على كل زوج من العناصر، طول [[Kotlin/List|اللائحة]] المعادة يساوي طول أٌقصرهما.<syntaxhighlight lang="kotlin">
inline fun <T, R, V> Iterable<T>.zip(
inline fun <T, R, V> Iterable<T>.zip(
     other: Array<out R>,  
     other: Array<out R>,  
     transform: (a: T, b: R) -> V
     transform: (a: T, b: R) -> V
): List<V>  
): List<V>  
</syntaxhighlight>في حال استدعاء الدالة<code>zip()‎</code>  عبر [[Kotlin/Iterable|مجموعة تكرارية]] مع تمرير [[Kotlin/Array|مصفوفة]] و دالة <code>transform</code> كوسيطين فستعيد [[Kotlin/List|لائحة]] تتضمّن أزواج مكونة من عناصر  [[Kotlin/Iterable|المجموعة التكرارية]] التي استُدعيت عبرها وعناصر [[Kotlin/Array|المصفوفة]] المُمرّرة بنفس الفهرس باستخدام الدالة <code>transform</code> المُمرّرة مُطبّقة على كل زوج من العناصر، طول [[Kotlin/List|اللائحة]] المعادة يساوي طول أٌقصرهما.<syntaxhighlight lang="kotlin">
</syntaxhighlight>في حال استدعاء الدالة<code>zip()‎</code>  عبر [[Kotlin/Iterable|مجموعة تكرارية]] مع تمرير [[Kotlin/Array|مصفوفة]] و دالة <code>transform</code> كوسيطين فستعيد [[Kotlin/List|لائحة]] تتضمّن أزواجا مكونة من عناصر  [[Kotlin/Iterable|المجموعة التكرارية]] التي استُدعيت عبرها وعناصر [[Kotlin/Array|المصفوفة]] المُمرّرة بنفس الفهرس باستخدام الدالة <code>transform</code> المُمرّرة مُطبّقة على كل زوج من العناصر، طول [[Kotlin/List|اللائحة]] المعادة يساوي طول أٌقصرهما.<syntaxhighlight lang="kotlin">
inline fun <T, R, V> Iterable<T>.zip(
inline fun <T, R, V> Iterable<T>.zip(
     other: Iterable<R>,  
     other: Iterable<R>,  
     transform: (a: T, b: R) -> V
     transform: (a: T, b: R) -> V
): List<V>  
): List<V>  
</syntaxhighlight>في حال استدعاء الدالة<code>zip()‎</code>  عبر [[Kotlin/Iterable|مجموعة تكرارية]] مع تمرير [[Kotlin/Iterable|مجموعة تكرارية]] و دالة <code>transform</code> كوسيطين فستعيد [[Kotlin/List|لائحة]] تتضمّن أزواج مكونة من عناصر  [[Kotlin/Iterable|المجموعة التكرارية]] التي استُدعيت عبرها وعناصر [[Kotlin/Iterable|المجموعة التكرارية]] المُمرّرة بنفس الفهرس باستخدام الدالة <code>transform</code> المُمرّرة مُطبّقة على كل زوج من العناصر، طول [[Kotlin/List|اللائحة]] المعادة يساوي طول أٌقصرهما.
</syntaxhighlight>في حال استدعاء الدالة<code>zip()‎</code>  عبر [[Kotlin/Iterable|مجموعة تكرارية]] مع تمرير [[Kotlin/Iterable|مجموعة تكرارية]] و دالة <code>transform</code> كوسيطين فستعيد [[Kotlin/List|لائحة]] تتضمّن أزواجا مكونة من عناصر  [[Kotlin/Iterable|المجموعة التكرارية]] التي استُدعيت عبرها وعناصر [[Kotlin/Iterable|المجموعة التكرارية]] المُمرّرة بنفس الفهرس باستخدام الدالة <code>transform</code> المُمرّرة مُطبّقة على كل زوج من العناصر، طول [[Kotlin/List|اللائحة]] المعادة يساوي طول أٌقصرهما.


يُلاحَظ وجود الكلمة المفتاحية <code>inline</code> للدلالة على أن هذه الدالة مباشرة، وللمزيد من التفاصيل راجع <nowiki/>[[Kotlin/inline functions|توثيق الدوال المباشرة (inline functions)]].
يُلاحَظ وجود الكلمة المفتاحية <code>inline</code> للدلالة على أن هذه الدالة مباشرة، وللمزيد من التفاصيل راجع <nowiki/>[[Kotlin/inline functions|توثيق الدوال المباشرة (inline functions)]].


==القيمة المُعادة==
==القيمة المُعادة==
[[Kotlin/Pair|زوج]] مكون من [[Kotlin/List|لائحتين]]، حيث [[Kotlin/List|اللائحة]] الأولي مكونة من العناصر الأولى من كل زوج من [[Kotlin/Array|المصفوفة]] أو [[Kotlin/Iterable|المجموعة التكرارية]]  التي استُدعيت عبرها،  و<nowiki/>[[Kotlin/List|اللائحة]] الثانية مكونة من العناصر الثانية من كل زوج من  [[Kotlin/Array|المصفوفة]] أو [[Kotlin/Iterable|المجموعة التكرارية]] التي استُدعيت عبرها.
[[Kotlin/List|لائحة]] تتضمّن أزواجًا.
==أمثلة==
==أمثلة==
===استخدام الدالة <code>()zip</code> مع المصفوفات===
===استخدام الدالة <code>()zip</code> مع اللوائح===
تعرّف الشيفرة الآتية  <nowiki/>[[Kotlin/Array|مصفوفة]] باسم <code>array</code>  مكونة من ثلاثة [[Kotlin/Pair|أزواج]] باستخدام الدالة <code>()arrayOf‎</code>، ثم تستخدم الدالة<code>()zip</code> على <code>array</code>، ثم تطبع الناتج:<syntaxhighlight lang="kotlin">
تعرّف الشيفرة الآتية  <nowiki/>[[Kotlin/List|لائحتين]] باسم <code>listA</code> و <code>listB</code>  باستخدام الدالة <code>()listOf</code>، ثم تستخدم الدالة<code>()zip</code> على <code>listA</code> مع تمرير <code>listB</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 listA = listOf("a", "b", "c")
   
val listB = listOf(1, 2, 3, 4)
println(array.unzip()) // ([1, 2, 3], [a, b, c])
 
 
println(listA zip listB) // [(a, 1), (b, 2), (c, 3)]
}
</syntaxhighlight>
 
=== استخدام الدالة <code>()zip</code> مع اللوائح مع تمرير دالة ===
تعرّف الشيفرة الآتية  <nowiki/>[[Kotlin/List|لائحتين]] باسم <code>listA</code> و <code>listB</code>  باستخدام الدالة <code>()listOf</code>، ثم تستخدم الدالة<code>()zip</code> على <code>listA</code> مع تمرير <code>listB و</code> دالة أخرى كوسيطين، ثم تطبع الناتج:<syntaxhighlight lang="kotlin">
fun main(args: Array<String>) {
val listA = listOf("a", "b", "c")
val listB = listOf(1, 2, 3, 4)
val result = listA.zip(listB) { a, b -> "$a$b" }
 
println(result) // [a1, b2, c3]
}
}
</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/unzip|unzip()]]</code>‎ : تعيد الدالة<code>unzip()‎</code> زوجًا مكونًا من لائحتين، حيث اللائحة الأولي مكونة من العناصر الأولى من كل زوج من <nowiki/>[[Kotlin/Array|المصفوفة]] أو المجموعة التكرارية  التي استُدعيت عبرها، واللائحة الثانية مكونة من العناصر الثانية من كل زوج من <nowiki/>[[Kotlin/Array|المصفوفة]] أو المجموعة التكرارية  التي استُدعيت عبرها.
*<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|المجموعة]]  التي استُدعيت عبرها.
==مصادر==
==مصادر==
<span> </span>
*[https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/zip.html الدالة  zip()‎ في التوثيق الرسميّ للمكتبة القياسيّة في لغة Kotlin.]
*[https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/unzip.html الدالة  zip()‎ في التوثيق الرسميّ للمكتبة القياسيّة في لغة Kotlin.]
[[تصنيف:Kotlin]]
[[تصنيف:Kotlin]]
[[تصنيف:Kotlin Functions]]
[[تصنيف:Kotlin Functions]]

مراجعة 13:57، 24 يونيو 2018

يختلف سلوك الدالةzip()‎ بحسب إمضائها، أنظر فقرة البنية العامة لأجل التفاصيل.

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

infix fun <T, R> Array<out T>.zip(
    other: Array<out R>
): List<Pair<T, R>> 
infix fun <R> ByteArray.zip(
    other: Array<out R>
): List<Pair<Byte, R>> 
infix fun <R> ShortArray.zip(
    other: Array<out R>
): List<Pair<Short, R>> 
infix fun <R> IntArray.zip(
    other: Array<out R>
): List<Pair<Int, R>> 
infix fun <R> LongArray.zip(
    other: Array<out R>
): List<Pair<Long, R>> 
infix fun <R> FloatArray.zip(
    other: Array<out R>
): List<Pair<Float, R>> 
infix fun <R> DoubleArray.zip(
    other: Array<out R>
): List<Pair<Double, R>> 
infix fun <R> BooleanArray.zip(
    other: Array<out R>
): List<Pair<Boolean, R>> 
infix fun <R> CharArray.zip(
    other: Array<out R>
): List<Pair<Char, R>> 
infix fun ByteArray.zip(
    other: ByteArray
): List<Pair<Byte, Byte>> 
infix fun ShortArray.zip(
    other: ShortArray
): List<Pair<Short, Short>> 
infix fun IntArray.zip(other: IntArray): List<Pair<Int, Int>> 
infix fun LongArray.zip(
    other: LongArray
): List<Pair<Long, Long>> 
infix fun FloatArray.zip(
    other: FloatArray
): List<Pair<Float, Float>> 
infix fun DoubleArray.zip(
    other: DoubleArray
): List<Pair<Double, Double>> 
infix fun BooleanArray.zip(
    other: BooleanArray
): List<Pair<Boolean, Boolean>> 
infix fun CharArray.zip(
    other: CharArray
): List<Pair<Char, Char>>

في حال استدعاء الدالةzip()‎ عبر مصفوفة مع تمرير مصفوفة كوسيط فستعيد لائحة تتضمّن أزواجا مكونة من عناصر المصفوفة التي استُدعيت عبرها وعناصر المصفوفة المُمرّرة بنفس الفهرس، طول اللائحة المعادة يساوي طول أٌقصرهما.

infix fun <T, R> Array<out T>.zip(
    other: Iterable<R>
): List<Pair<T, R>>
infix fun <R> ByteArray.zip(
    other: Iterable<R>
): List<Pair<Byte, R>> 
infix fun <R> ShortArray.zip(
    other: Iterable<R>
): List<Pair<Short, R>> 
infix fun <R> IntArray.zip(
    other: Iterable<R>
): List<Pair<Int, R>> 
infix fun <R> LongArray.zip(
    other: Iterable<R>
): List<Pair<Long, R>> 
infix fun <R> FloatArray.zip(
    other: Iterable<R>
): List<Pair<Float, R>> 
infix fun <R> DoubleArray.zip(
    other: Iterable<R>
): List<Pair<Double, R>> 
infix fun <R> BooleanArray.zip(
    other: Iterable<R>
): List<Pair<Boolean, R>>
infix fun <R> CharArray.zip(
    other: Iterable<R>
): List<Pair<Char, R>>

في حال استدعاء الدالةzip()‎ عبر مصفوفة مع تمرير مجموعة تكرارية كوسيط فستعيد لائحة تتضمّن أزواجا مكونة من عناصر المصفوفة التي استُدعيت عبرها وعناصر المجموعة التكرارية المُمرّرة بنفس الفهرس، طول اللائحة المعادة يساوي طول أٌقصرهما.

infix fun <T, R> Iterable<T>.zip(
    other: Array<out R>
): List<Pair<T, R>>

في حال استدعاء الدالةzip()‎ عبر مجموعة تكرارية مع تمرير مصفوفة كوسيط فستعيد لائحة تتضمّن أزواجًا مكونة من عناصر المصفوفة التي استُدعيت عبرها وعناصر المجموعة التكرارية المُمرّرة بنفس الفهرس، طول اللائحة المعادة يساوي طول أٌقصرهما.

infix fun <T, R> Iterable<T>.zip(
    other: Iterable<R>
): List<Pair<T, R>>

في حال استدعاء الدالةzip()‎ عبر مجموعة تكرارية مع تمرير مجموعة تكرارية كوسيط فستعيد لائحة تتضمّن أزواجا مكونة من عناصر المجموعة التكرارية التي استُدعيت عبرها وعناصر المجموعة التكرارية المُمرّرة بنفس الفهرس، طول اللائحة المعادة يساوي طول أٌقصرهما.

inline fun <T, R, V> Array<out T>.zip(
    other: Array<out R>, 
    transform: (a: T, b: R) -> V
): List<V> 
inline fun <R, V> ByteArray.zip(
    other: Array<out R>, 
    transform: (a: Byte, b: R) -> V
): List<V> 
inline fun <R, V> ShortArray.zip(
    other: Array<out R>, 
    transform: (a: Short, b: R) -> V
): List<V> 
inline fun <R, V> IntArray.zip(
    other: Array<out R>, 
    transform: (a: Int, b: R) -> V
): List<V> 
inline fun <R, V> LongArray.zip(
    other: Array<out R>, 
    transform: (a: Long, b: R) -> V
): List<V> 
inline fun <R, V> FloatArray.zip(
    other: Array<out R>, 
    transform: (a: Float, b: R) -> V
): List<V>
inline fun <R, V> DoubleArray.zip(
    other: Array<out R>, 
    transform: (a: Double, b: R) -> V
): List<V> 
inline fun <R, V> BooleanArray.zip(
    other: Array<out R>, 
    transform: (a: Boolean, b: R) -> V
): List<V> 
inline fun <R, V> CharArray.zip(
    other: Array<out R>, 
    transform: (a: Char, b: R) -> V
): List<V> 
inline fun <V> ByteArray.zip(
    other: ByteArray, 
    transform: (a: Byte, b: Byte) -> V
): List<V> 
inline fun <V> ShortArray.zip(
    other: ShortArray, 
    transform: (a: Short, b: Short) -> V
): List<V> 
inline fun <V> IntArray.zip(
    other: IntArray, 
    transform: (a: Int, b: Int) -> V
): List<V> 
inline fun <V> LongArray.zip(
    other: LongArray, 
    transform: (a: Long, b: Long) -> V
): List<V> 
inline fun <V> FloatArray.zip(
    other: FloatArray, 
    transform: (a: Float, b: Float) -> V
): List<V> 
inline fun <V> DoubleArray.zip(
    other: DoubleArray, 
    transform: (a: Double, b: Double) -> V
): List<V> 
inline fun <V> BooleanArray.zip(
    other: BooleanArray, 
    transform: (a: Boolean, b: Boolean) -> V
): List<V> 
inline fun <V> CharArray.zip(
    other: CharArray, 
    transform: (a: Char, b: Char) -> V
): List<V>

في حال استدعاء الدالةzip()‎ عبر مصفوفة مع تمرير مصفوفة و دالة transform كوسيطين فستعيد لائحة تتضمّن أزواجا مكونة من عناصر المصفوفة التي استُدعيت عبرها وعناصر المصفوفة المُمرّرة بنفس الفهرس باستخدام الدالة transform المُمرّرة مُطبّقة على كل زوج من العناصر، طول اللائحة المعادة يساوي طول أٌقصرهما.

inline fun <T, R, V> Array<out T>.zip(
    other: Iterable<R>, 
    transform: (a: T, b: R) -> V
): List<V> 
inline fun <R, V> ByteArray.zip(
    other: Iterable<R>, 
    transform: (a: Byte, b: R) -> V
): List<V> 
inline fun <R, V> ShortArray.zip(
    other: Iterable<R>, 
    transform: (a: Short, b: R) -> V
): List<V> 
inline fun <R, V> IntArray.zip(
    other: Iterable<R>, 
    transform: (a: Int, b: R) -> V
): List<V>
inline fun <R, V> LongArray.zip(
    other: Iterable<R>, 
    transform: (a: Long, b: R) -> V
): List<V> 
inline fun <R, V> FloatArray.zip(
    other: Iterable<R>, 
    transform: (a: Float, b: R) -> V
): List<V> 
inline fun <R, V> DoubleArray.zip(
    other: Iterable<R>, 
    transform: (a: Double, b: R) -> V
): List<V> 
inline fun <R, V> BooleanArray.zip(
    other: Iterable<R>, 
    transform: (a: Boolean, b: R) -> V
): List<V> 
inline fun <R, V> CharArray.zip(
    other: Iterable<R>, 
    transform: (a: Char, b: R) -> V
): List<V>

في حال استدعاء الدالةzip()‎ عبر مصفوفة مع تمرير مجموعة تكرارية و دالة transform كوسيطين فستعيد لائحة تتضمّن أزواجا مكونة من عناصر المصفوفة التي استُدعيت عبرها وعناصر المجموعة التكرارية المُمرّرة بنفس الفهرس باستخدام الدالة transform المُمرّرة مُطبّقة على كل زوج من العناصر، طول اللائحة المعادة يساوي طول أٌقصرهما.

inline fun <T, R, V> Iterable<T>.zip(
    other: Array<out R>, 
    transform: (a: T, b: R) -> V
): List<V>

في حال استدعاء الدالةzip()‎ عبر مجموعة تكرارية مع تمرير مصفوفة و دالة transform كوسيطين فستعيد لائحة تتضمّن أزواجا مكونة من عناصر المجموعة التكرارية التي استُدعيت عبرها وعناصر المصفوفة المُمرّرة بنفس الفهرس باستخدام الدالة transform المُمرّرة مُطبّقة على كل زوج من العناصر، طول اللائحة المعادة يساوي طول أٌقصرهما.

inline fun <T, R, V> Iterable<T>.zip(
    other: Iterable<R>, 
    transform: (a: T, b: R) -> V
): List<V>

في حال استدعاء الدالةzip()‎ عبر مجموعة تكرارية مع تمرير مجموعة تكرارية و دالة transform كوسيطين فستعيد لائحة تتضمّن أزواجا مكونة من عناصر المجموعة التكرارية التي استُدعيت عبرها وعناصر المجموعة التكرارية المُمرّرة بنفس الفهرس باستخدام الدالة transform المُمرّرة مُطبّقة على كل زوج من العناصر، طول اللائحة المعادة يساوي طول أٌقصرهما.

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

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

لائحة تتضمّن أزواجًا.

أمثلة

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

تعرّف الشيفرة الآتية  لائحتين باسم listA و listB باستخدام الدالة ()listOf، ثم تستخدم الدالة()zip على listA مع تمرير listB كوسيط، ثم تطبع الناتج:

fun main(args: Array<String>) {
val listA = listOf("a", "b", "c")
val listB = listOf(1, 2, 3, 4)

println(listA zip listB) // [(a, 1), (b, 2), (c, 3)]
}

استخدام الدالة ()zip مع اللوائح مع تمرير دالة

تعرّف الشيفرة الآتية  لائحتين باسم listA و listB باستخدام الدالة ()listOf، ثم تستخدم الدالة()zip على listA مع تمرير listB و دالة أخرى كوسيطين، ثم تطبع الناتج:

fun main(args: Array<String>) {
val listA = listOf("a", "b", "c")
val listB = listOf(1, 2, 3, 4)
val result = listA.zip(listB) { a, b -> "$a$b" }

println(result) // [a1, b2, c3]
}

أنظر أيضًا

  • union()‎ : تعيد مجموعة من النوع Set تضم جميع عناصر المصفوفة  أو المجموعة التكرارية  التي استُدعيت عبرها والمجموعة التكرارية المُمرّرة.
  • unzip()‎ : تعيد الدالةunzip()‎ زوجًا مكونًا من لائحتين، حيث اللائحة الأولي مكونة من العناصر الأولى من كل زوج من المصفوفة أو المجموعة التكرارية  التي استُدعيت عبرها، واللائحة الثانية مكونة من العناصر الثانية من كل زوج من المصفوفة أو المجموعة التكرارية  التي استُدعيت عبرها.
  • toDoubleArray()‎ : تعيد مصفوفة من النوع DoubleArrayتضم جميع عناصر المصفوفة العامة (أي من النوع Array<Double>‎) أو المجموعة  التي استُدعيت عبرها.

مصادر