الدالة zipWithNext()‎ في Kotlin

من موسوعة حسوب
مراجعة 06:59، 7 سبتمبر 2018 بواسطة جميل-بيلوني (نقاش | مساهمات) (مراجعة وتدقيق.)
(فرق) → مراجعة أقدم | المراجعة الحالية (فرق) | مراجعة أحدث ← (فرق)

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

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

fun CharSequence.zipWithNext(): List<Pair<Char, Char>>

الإصدار المطلوب: Kotlin 1.2. إن استدعيت الدالة zipWithNext()‎ مع سلسلة من المحارف ومع تمرير سلسلة أخرى إليها كمعامل، فستشكل أزواجًا من محارف السلسلة المعطاة التي لها فهرس معين ومحارف السلسلة other التي لها الفهرس التالي وتضعها في قائمة؛ طول القائمة المعادة يساوي طول أٌقصرهما.

inline fun <R> CharSequence.zipWithNext(
    transform: (a: Char, b: Char) -> R
): List<R>

الإصدار المطلوب: Kotlin 1.2.

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

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

المعاملات

other

سلسلة المحارف الأخرى التي ستطبق عليها العملية.

transform

الدالة التي سيمرر إليها محارف السلسلة المعطاة التي لها فهرس معين ومحارف السلسلة other التي لها الفهرس التالي ثم تعيد القيم المقابلة لها.

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

تعاد قائمة تحوي أزواجًا من محارف السلسلة التي استدعيت معها التي لها الفهرس الحالي والمحارف التي لها الفهرس التالي من السلسلة other، أو تنشئ قيمًا ناتجة عن تمرير تلك الأزواج إلى الدالة transform.

أمثلة

مثالٌ على استعمال الدالة zipWithNext()‎:

fun main(args: Array<String>) {
    val letters = ('a'..'f').toList()
    val pairs = letters.zipWithNext()

    println(letters) // [a, b, c, d, e, f]
    println(pairs) // [(a, b), (b, c), (c, d), (d, e), (e, f)]
}

مثالٌ آخر على استعمال الدالة zipWithNext()‎ مع تمرير دالة:

fun main(args: Array<String>) {
    val values = listOf(1, 4, 9, 16, 25, 36)
    val deltas = values.zipWithNext { a, b -> b - a }

    println(deltas) // [3, 5, 7, 9, 11]
}

انظر أيضًا

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

مصادر