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

من موسوعة حسوب
مراجعة 16:51، 24 يوليو 2018 بواسطة جميل-بيلوني (نقاش | مساهمات) (مراجعة وتدقيق.)

تضيف الدالة joinTo()‎ بادئة ولاحقة إلى جميع عناصر المصفوفة أو المجموعة التي استُدعيت معها (أو جزءٍ منها) وتفصلها بفاصلة معينة ثمَّ تضيفها إلى سلسة نصية موجودة مسبقًا.

إن كانت المجموعة كبيرة، فيمكن تحديد جزءٍ أولي معين منها فقط لإضافته إلى السلسلة النصية؛ في هذه الحالة، تضاف سلسلة نصية معينة، مثل "..." أو "...إلخ" إلى السلسلة النصية الناتجة للدلالة على وجود جزء مقتطع.

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

fun <T, A> Array<out T>.joinTo(
    buffer: A, 
    separator: CharSequence = ", ", 
    prefix: CharSequence = "", 
    postfix: CharSequence = "", 
    limit: Int = -1, 
    truncated: CharSequence = "...", 
    transform: (T) -> CharSequence = null
): A
fun <A> ByteArray.joinTo(
    buffer: A, 
    separator: CharSequence = ", ", 
    prefix: CharSequence = "", 
    postfix: CharSequence = "", 
    limit: Int = -1, 
    truncated: CharSequence = "...", 
    transform: (Byte) -> CharSequence = null
): A 
fun <A> ShortArray.joinTo(
    buffer: A, 
    separator: CharSequence = ", ", 
    prefix: CharSequence = "", 
    postfix: CharSequence = "", 
    limit: Int = -1, 
    truncated: CharSequence = "...", 
    transform: (Short) -> CharSequence = null
): A 
fun <A> IntArray.joinTo(
    buffer: A, 
    separator: CharSequence = ", ", 
    prefix: CharSequence = "", 
    postfix: CharSequence = "", 
    limit: Int = -1, 
    truncated: CharSequence = "...", 
    transform: (Int) -> CharSequence = null
): A 
fun <A> LongArray.joinTo(
    buffer: A, 
    separator: CharSequence = ", ", 
    prefix: CharSequence = "", 
    postfix: CharSequence = "", 
    limit: Int = -1, 
    truncated: CharSequence = "...", 
    transform: (Long) -> CharSequence = null
): A 
fun <A> FloatArray.joinTo(
    buffer: A, 
    separator: CharSequence = ", ", 
    prefix: CharSequence = "", 
    postfix: CharSequence = "", 
    limit: Int = -1, 
    truncated: CharSequence = "...", 
    transform: (Float) -> CharSequence = null
): A 
fun <A> DoubleArray.joinTo(
    buffer: A, 
    separator: CharSequence = ", ", 
    prefix: CharSequence = "", 
    postfix: CharSequence = "", 
    limit: Int = -1, 
    truncated: CharSequence = "...", 
    transform: (Double) -> CharSequence = null
): A 
fun <A> BooleanArray.joinTo(
    buffer: A, 
    separator: CharSequence = ", ", 
    prefix: CharSequence = "", 
    postfix: CharSequence = "", 
    limit: Int = -1, 
    truncated: CharSequence = "...", 
    transform: (Boolean) -> CharSequence = null
): A 
fun <A> CharArray.joinTo(
    buffer: A, 
    separator: CharSequence = ", ", 
    prefix: CharSequence = "", 
    postfix: CharSequence = "", 
    limit: Int = -1, 
    truncated: CharSequence = "...", 
    transform: (Char) -> CharSequence = null
): A 
fun <T, A> Iterable<T>.joinTo(
    buffer: A, 
    separator: CharSequence = ", ", 
    prefix: CharSequence = "", 
    postfix: CharSequence = "", 
    limit: Int = -1, 
    truncated: CharSequence = "...", 
    transform: (T) -> CharSequence = null
): A

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

تُعاد السلسلة النصية buffer مضافًا إليها عناصر المصفوفة أو المجموعة المعطاة (أو الجزء limit الأولي منها فقط) بعد فصلها بالفاصل separator وإضافة البادئة prefix واللاحقة postfix إليها إن أعطيت هذه المعاملات. عند تحديد المعامل limit، ستضاف السلسلة النصية truncated (قيمتها الافتراضية هي "...") إلى نهاية السلسلة النصية المعادة لتشير إلى وجود جزء مقتطع.

أمثلة

استخدام الدالة ()joinTo مع كامل عناصر قائمة

تعرف الشيفرة الآتية سلسة نصية باسم sb باستخدام الدالة ()StringBuilder ثم تُنشئ قائمة باسم numbers باستخدام الدالة ()listOf. تُستعمَل بعد ذلك الدالة ()joinTo لإضافة بادئة ولاحقة إلى عناصر تلك القائمة ثمَّ إضافتها إلى السلسلة النصية sb:

fun main(args: Array<String>) {
    val sb = StringBuilder("An existing string and a list: ")
    val numbers = listOf(1, 2, 3)
    println(numbers.joinTo(sb, prefix = "[", postfix = "]").toString()) // An existing string and a list: [1, 2, 3]
}

استخدام الدالة ()joinTo مع جزء محدد من عناصر قائمة

تعرِّف الشيفرة الآتية سلسة نصية باسم firstNumber باستخدام الدالة ()StringBuilder ثمَّ تستخدم الدالة ()joinTo لاقتطاع أول خمسة عناصر من lotOfNumbers وإضافتها إلى تلك السلسلة النصية:

fun main(args: Array<String>) {
    val lotOfNumbers: Iterable<Int> = 1..100
    val firstNumbers = StringBuilder("First five numbers: ")
    println(lotOfNumbers.joinTo(firstNumbers, limit = 5).toString()) // First five numbers: 1, 2, 3, 4, 5, ...
}

انظر أيضًا

  • الدالة joinToString()‎: تضيف بادئة ولاحقة إلى جميع عناصر المصفوفة أو المجموعة التي استُدعيت معها (أو جزءٍ منها) بعد فصل عناصرها بفاصلة معينة ثمَّ تضع الناتج في سلسة نصية جديدة تنشئها آنذاك.
  • الدالة fill()‎: تبدِّل قيمة جديدة معطاة مكان عناصر محدَّدة في المصفوفة أو القائمة التي تستدعى معها.

مصادر