الفرق بين المراجعتين ل"Kotlin/collections/zip"
جميل-بيلوني (نقاش | مساهمات) ط (مراجعة وتدقيق.) |
|||
سطر 1: | سطر 1: | ||
− | + | <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> | + | </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> | + | </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> | + | </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> | + | </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> | + | </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> | + | </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> | + | </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> | + | </syntaxhighlight>وجود الكلمة المفتاحية <code>inline</code> يدل على أنَّ هذه الدالة مباشرة (للمزيد من التفاصيل، ارجع إلى صفحة [[Kotlin/inline functions|الدوال المباشرة (inline functions)]]). |
− | + | ==القيمة المعادة== | |
− | + | تعاد قائمة تحوي أزواجًا منشأة من عناصر الكائنين المعطيين التي لها نفس الفهرس، أو تعاد قائمة من قيمٍ منشأة عبر تمرير عناصر هذين الكائنين التي لها نفس الفهرس إلى دالة معينة (ارجع إلى قسم "البنية العامة" للمزيد من التفصيل). | |
− | |||
− | ==القيمة | ||
− | |||
==أمثلة== | ==أمثلة== | ||
− | + | استعمال الدالة <code>()zip</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"> |
− | |||
− | |||
− | |||
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/unzip|unzip()]]</code> : تعيد قائمتين، إذ تحتوي الأولى على القيم الأولى لكل زوج من أزواج [[Kotlin/Array|المصفوفة]] أو [[Kotlin/Iterable|المجموعة التكرارية]] التي استُدعيت معها وتحتوي الثانية على القيم الثانية لكل زوج من تلك الأزواج. |
− | + | *الدالة <code>[[Kotlin/collections/union|union()]]</code> : تجمع العناصر المشتركة وغير المتشركة بين <nowiki/>[[Kotlin/Array|المصفوفة]] أو المجموعة التكرارية التي استُدعيت معها وبين المجموعة التكرارية المُمرّرة إليها في مجموعةٍ واحدةٍ من النوع <code>Set</code> بعد حذف العناصر المتكررة. | |
− | *<code>[[Kotlin/collections/ | ||
==مصادر== | ==مصادر== | ||
− | *[https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/zip.html الدالة | + | *[https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/zip.html صفحة الدالة zip() في التوثيق الرسميّ للمكتبة القياسيّة في لغة Kotlin.] |
[[تصنيف:Kotlin]] | [[تصنيف:Kotlin]] | ||
[[تصنيف:Kotlin Functions]] | [[تصنيف:Kotlin Functions]] |
مراجعة 16:54، 9 أغسطس 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)).
القيمة المعادة
تعاد قائمة تحوي أزواجًا منشأة من عناصر الكائنين المعطيين التي لها نفس الفهرس، أو تعاد قائمة من قيمٍ منشأة عبر تمرير عناصر هذين الكائنين التي لها نفس الفهرس إلى دالة معينة (ارجع إلى قسم "البنية العامة" للمزيد من التفصيل).
أمثلة
استعمال الدالة ()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
بعد حذف العناصر المتكررة.