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

من موسوعة حسوب
اذهب إلى التنقل اذهب إلى البحث
ط
 
(مراجعتان متوسطتان بواسطة مستخدمين اثنين آخرين غير معروضتين)
سطر 1: سطر 1:
يختلف سلوك الدالة<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|البنية العامة]] لأجل التفاصيل.  
+
<noinclude>{{DISPLAYTITLE: الدالة <code>zip()‎</code> في Kotlin}}</noinclude>
 +
تنشئ الدالة <code>zip()‎</code> أزواجًا من عناصر كائنين لها نفس الفهرس، أو تنشئ قيمًا عبر تمرير عناصر لها نفس الفهرس تجلب من كائنين مختلفين إلى دالة معينة.  
 
==البنية العامة==
 
==البنية العامة==
<syntaxhighlight lang="kotlin">
+
إن استدعيت الدالة <code>zip()‎</code> مع [[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: Array<out R>
 
     other: Array<out R>
سطر 52: سطر 53:
 
): 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/Iterable|مجموعة تكرارية]] إليها كوسيط، فستشكل أزواجًا من عناصر المصفوفة والمجموعة التي لها نفس الفهرس وتضعها في قائمة؛ طول [[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: سطر 82:
 
): 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/Iterable|مجموعة تكرارية]] ومع تمرير [[Kotlin/Array|مصفوفة]] إليها كوسيط، فستشكل أزواجًا من عناصر تلك المجموعة والمصفوفة التي لها نفس الفهرس وتضعها في قائمة؛ طول [[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/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/Array|مصفوفة]] ومع تمرير [[Kotlin/Array|مصفوفة]] ودالة إليها كوسيطين، فستعيد [[Kotlin/List|قائمة]] تحوي قيمًا منشأة من تمرير عناصر هاتين [[Kotlin/Array|المصفوفتين]] التي لها نفس الفهرس إلى تلك الدالة المعطاة؛ طول [[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: سطر 160:
 
): 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/Iterable|مجموعة تكرارية]] ودالة كوسيطين، فستعيد [[Kotlin/List|قائمة]] تحوي قيمًا منشأة من تمرير عناصر هذه [[Kotlin/Array|المصفوفة]] والمجموعة التي لها نفس الفهرس إلى تلك الدالة المعطاة؛ طول [[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: سطر 198:
 
): 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/Iterable|مجموعة تكرارية]] ومع تمرير [[Kotlin/Array|مصفوفة]] ودالة كوسيطين، فستعيد [[Kotlin/List|قائمة]] تحوي قيمًا منشأة من تمرير عناصر هذه المجموعة و<nowiki/>[[Kotlin/Array|المصفوفة]] التي لها نفس الفهرس إلى تلك الدالة المعطاة؛ طول [[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/Iterable|مجموعة تكرارية]] ودالة كوسيطين، فستعيد [[Kotlin/List|قائمة]] تحوي قيمًا منشأة من تمرير عناصر هاتين المجموعتين التي لها نفس الفهرس إلى تلك الدالة المعطاة؛ طول [[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>inline</code> يدل على أنَّ هذه الدالة مباشرة (للمزيد من التفاصيل، ارجع إلى صفحة [[Kotlin/inline functions|الدوال المباشرة (inline functions)]]).
  
يُلاحَظ وجود الكلمة المفتاحية <code>inline</code> للدلالة على أن هذه الدالة مباشرة، وللمزيد من التفاصيل راجع <nowiki/>[[Kotlin/inline functions|توثيق الدوال المباشرة (inline functions)]].
+
== المعاملات ==
  
==القيمة المُعادة==
+
=== <code>other</code> ===
[[Kotlin/List|لائحة]] تتضمّن أزواجًا.
+
الكائن الآخر الذي ستطبق عليها العملية.
 +
 
 +
=== <code>transform</code> ===
 +
الدالة التي سيمرر إليها العنصران اللذان يملكان الفهرس نفسه ثم تعيد القيمة المقابلة لهما.
 +
 
 +
==القيمة المعادة==
 +
تعاد قائمة تحوي أزواجًا منشأة من عناصر الكائنين المعطيين التي لها نفس الفهرس، أو تعاد قائمة من قيمٍ منشأة عبر تمرير عناصر هذين الكائنين التي لها نفس الفهرس إلى الدالة <code>transform</code>  (ارجع إلى قسم "البنية العامة" للمزيد من التفصيل).
 
==أمثلة==
 
==أمثلة==
===استخدام الدالة <code>()zip</code> مع اللوائح===
+
استعمال الدالة <code>()zip</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 listA = listOf("a", "b", "c")
+
    val listA = listOf("a", "b", "c")
val listB = listOf(1, 2, 3, 4)
+
    val listB = listOf(1, 2, 3, 4)
  
println(listA zip listB) // [(a, 1), (b, 2), (c, 3)]
+
    println(listA zip listB) // [(a, 1), (b, 2), (c, 3)]
 
}
 
}
</syntaxhighlight>
+
</syntaxhighlight>استعمال الدالة <code>()zip</code> لتشكيل قيم مؤلفة من عنصرين يؤخذ كلٌّ منهما من قائمة معينة:<syntaxhighlight lang="kotlin">
 
 
=== استخدام الدالة <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>) {
 
fun main(args: Array<String>) {
val listA = listOf("a", "b", "c")
+
    val listA = listOf("a", "b", "c")
val listB = listOf(1, 2, 3, 4)
+
    val listB = listOf(1, 2, 3, 4)
val result = listA.zip(listB) { a, b -> "$a$b" }
+
    val result = listA.zip(listB) { a, b -> "$a$b" }
  
println(result) // [a1, b2, c3]
+
    println(result) // [a1, b2, c3]
 
}
 
}
 
</syntaxhighlight>
 
</syntaxhighlight>
==أنظر أيضًا==
+
==انظر أيضًا==
*<code>[[Kotlin/collections/union|union()]]</code>‎ : تعيد مجموعة من النوع Set تضم جميع عناصر <nowiki/>[[Kotlin/Array|المصفوفة]]  أو المجموعة التكرارية  التي استُدعيت عبرها والمجموعة التكرارية المُمرّرة.
+
*الدالة <code>[[Kotlin/collections/unzip|unzip()]]</code>‎ : تعيد قائمتين، إذ تحتوي الأولى على القيم الأولى لكل زوج من أزواج [[Kotlin/Array|المصفوفة]] أو [[Kotlin/Iterable|المجموعة التكرارية]] التي استُدعيت معها وتحتوي الثانية على القيم الثانية لكل زوج من تلك الأزواج.
*<code>[[Kotlin/collections/unzip|unzip()]]</code>‎ : تعيد الدالة<code>unzip()‎</code> زوجًا مكونًا من لائحتين، حيث اللائحة الأولي مكونة من العناصر الأولى من كل زوج من <nowiki/>[[Kotlin/Array|المصفوفة]] أو المجموعة التكرارية  التي استُدعيت عبرها، واللائحة الثانية مكونة من العناصر الثانية من كل زوج من <nowiki/>[[Kotlin/Array|المصفوفة]] أو المجموعة التكرارية  التي استُدعيت عبرها.
+
*الدالة <code>[[Kotlin/collections/union|union()]]</code>‎ : تجمع العناصر المشتركة وغير المتشركة بين <nowiki/>[[Kotlin/Array|المصفوفة]] أو المجموعة التكرارية التي استُدعيت معها وبين المجموعة التكرارية المُمرّرة إليها في مجموعةٍ واحدةٍ من النوع <code>Set</code> بعد حذف العناصر المتكررة.
*<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/zip.html الدالة  zip()‎ في التوثيق الرسميّ للمكتبة القياسيّة في لغة Kotlin.]
+
*[https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/zip.html صفحة الدالة zip()‎ في التوثيق الرسميّ للمكتبة القياسيّة في لغة Kotlin.]
 
[[تصنيف:Kotlin]]
 
[[تصنيف:Kotlin]]
[[تصنيف:Kotlin Functions]]
+
[[تصنيف:Kotlin Function]]
 +
[[تصنيف:Kotlin Collection]]

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

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

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

إن استدعيت الدالة 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()‎ مع مصفوفة ومع تمرير مجموعة تكرارية ودالة كوسيطين، فستعيد قائمة تحوي قيمًا منشأة من تمرير عناصر هذه المصفوفة والمجموعة التي لها نفس الفهرس إلى تلك الدالة المعطاة؛ طول القائمة المعادة يساوي طول أٌقصرهما.

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()‎ مع مجموعة تكرارية ومع تمرير مصفوفة ودالة كوسيطين، فستعيد قائمة تحوي قيمًا منشأة من تمرير عناصر هذه المجموعة والمصفوفة التي لها نفس الفهرس إلى تلك الدالة المعطاة؛ طول القائمة المعادة يساوي طول أٌقصرهما.

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

في حال استدعاء الدالة zip()‎ مع مجموعة تكرارية ومع تمرير مجموعة تكرارية ودالة كوسيطين، فستعيد قائمة تحوي قيمًا منشأة من تمرير عناصر هاتين المجموعتين التي لها نفس الفهرس إلى تلك الدالة المعطاة؛ طول القائمة المعادة يساوي طول أٌقصرهما.

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

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

المعاملات

other

الكائن الآخر الذي ستطبق عليها العملية.

transform

الدالة التي سيمرر إليها العنصران اللذان يملكان الفهرس نفسه ثم تعيد القيمة المقابلة لهما.

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

تعاد قائمة تحوي أزواجًا منشأة من عناصر الكائنين المعطيين التي لها نفس الفهرس، أو تعاد قائمة من قيمٍ منشأة عبر تمرير عناصر هذين الكائنين التي لها نفس الفهرس إلى الدالة transform (ارجع إلى قسم "البنية العامة" للمزيد من التفصيل).

أمثلة

استعمال الدالة ()zip لتشكيل أزواج من قيم قائمتين:

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 لتشكيل قيم مؤلفة من عنصرين يؤخذ كلٌّ منهما من قائمة معينة:

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]
}

انظر أيضًا

  • الدالة unzip()‎ : تعيد قائمتين، إذ تحتوي الأولى على القيم الأولى لكل زوج من أزواج المصفوفة أو المجموعة التكرارية التي استُدعيت معها وتحتوي الثانية على القيم الثانية لكل زوج من تلك الأزواج.
  • الدالة union()‎ : تجمع العناصر المشتركة وغير المتشركة بين المصفوفة أو المجموعة التكرارية التي استُدعيت معها وبين المجموعة التكرارية المُمرّرة إليها في مجموعةٍ واحدةٍ من النوع Set بعد حذف العناصر المتكررة.

مصادر