الفرق بين المراجعتين ل"Kotlin/collections/zip"
جميل-بيلوني (نقاش | مساهمات) ط |
|||
(4 مراجعات متوسطة بواسطة 3 مستخدمين غير معروضة) | |||
سطر 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>other</code> === |
− | + | الكائن الآخر الذي ستطبق عليها العملية. | |
+ | |||
+ | === <code>transform</code> === | ||
+ | الدالة التي سيمرر إليها العنصران اللذان يملكان الفهرس نفسه ثم تعيد القيمة المقابلة لهما. | ||
+ | |||
+ | ==القيمة المعادة== | ||
+ | تعاد قائمة تحوي أزواجًا منشأة من عناصر الكائنين المعطيين التي لها نفس الفهرس، أو تعاد قائمة من قيمٍ منشأة عبر تمرير عناصر هذين الكائنين التي لها نفس الفهرس إلى الدالة <code>transform</code> (ارجع إلى قسم "البنية العامة" للمزيد من التفصيل). | ||
==أمثلة== | ==أمثلة== | ||
− | + | استعمال الدالة <code>()zip</code> لتشكيل أزواج من قيم قائمتين:<syntaxhighlight lang="kotlin"> | |
− | + | 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)] | ||
+ | } | ||
+ | </syntaxhighlight>استعمال الدالة <code>()zip</code> لتشكيل قيم مؤلفة من عنصرين يؤخذ كلٌّ منهما من قائمة معينة:<syntaxhighlight lang="kotlin"> | ||
fun main(args: Array<String>) { | fun main(args: Array<String>) { | ||
− | val | + | 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/ | + | *الدالة <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 صفحة الدالة zip() في التوثيق الرسميّ للمكتبة القياسيّة في لغة Kotlin.] | |
− | *[https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/ | ||
[[تصنيف:Kotlin]] | [[تصنيف:Kotlin]] | ||
− | [[تصنيف:Kotlin | + | [[تصنيف: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
بعد حذف العناصر المتكررة.