التابع text.zip()‎ في لغة Kotlin

من موسوعة حسوب

يختلف سلوك الدالة zip()‎ بحسب نوع وعدد الوسائط المُمرّرة (انظر فقرة البنية العامة).

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

infix fun CharSequence.zip(
    other: CharSequence
): List<Pair<Char, Char>>

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

inline fun <V> CharSequence.zip(
    other: CharSequence, 
    transform: (a: Char, b: Char) -> V
): List<V>

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

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

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

لائحة.

أمثلة

استخدام الدالة zip()‎ مع السلاسل النصية

تستدعي الشيفرة الآتية الدالة zip()‎ عبر عدة سلاسل نصية مع تمرير سلسلة نصية كوسيط، وتطبع الناتج:

fun main(args: Array<String>) {
println("hsoub".zip("12345")) // [(h, 1), (s, 2), (o, 3), (u, 4), (b, 5)]
println("hsoub".zip("12")) // [(h, 1), (s, 2)]
println("hsoub" zip "HSOUB") // [(h, H), (s, S), (o, O), (u, U), (b, B)]
}

استخدام الدالة zip()‎ مع السلاسل النصية مع تمرير دالة

تستدعي الشيفرة الآتية الدالة zip()‎ عبر عدة سلاسل نصية مع تمرير سلسلة نصية ودالة كوسيط، وتطبع الناتج:

fun main(args: Array<String>) {
println("hsoub".zip("12345") {x, y -> listOf(x,y) }) // [[h, 1], [s, 2], [o, 3], [u, 4], [b, 5]]
println("hsoub".zip("wiki") {x, y -> if (x > y) x else y }) // [w, s, o, u]
}

انظر أيضًا

  • toUpperCase()‎ : تحوّل الدالة toUpperCase()‎ الحرف أو السلسلة النصية التي استٌدعيت عبرها إلى حالة الأحرف الكبيرة (uppercase).
  • toBigDecimal(): تحلّل الدالة toBigDecimal()السلسلة النصية التي استٌدعيت عبرها وتحوّلها إلى عدد من النوع BigDecimal.
  • isDefined(): تعيد القيمة true في حال كان الحرف (Unicode code point) الذي استٌدعيت عبره مُعرّفًا في اليونيكود (Unicode).

مصادر