الفرق بين المراجعتين ل"Kotlin/collections/joinTo"

من موسوعة حسوب
اذهب إلى التنقل اذهب إلى البحث
(أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE: الدالة <code>joinTo()‎</code> في لغة Kotlin}}</noinclude> يخت تجمّع الدالة<code>joinTo()‎</code> عناصر Ko...')
 
 
(5 مراجعات متوسطة بواسطة 3 مستخدمين غير معروضة)
سطر 1: سطر 1:
<noinclude>{{DISPLAYTITLE: الدالة <code>joinTo()‎</code> في لغة Kotlin}}</noinclude>
+
<noinclude>{{DISPLAYTITLE: الدالة <code>joinTo()‎</code> في Kotlin}}</noinclude>
يخت
+
تضيف الدالة <code>joinTo()‎</code> بادئة ولاحقة إلى جميع عناصر [[Kotlin/Array|المصفوفة]] أو [[Kotlin/collections|المجموعة]] التي استُدعيت معها (أو جزءٍ منها) وتفصلها بفاصلة معينة ثمَّ تضيفها إلى [[Kotlin/String|سلسة نصية]] موجودة مسبقًا.
  
تجمّع الدالة<code>joinTo()‎</code> عناصر [[Kotlin/Array|المصفوفة]] أو [[Kotlin/collections|المجموعة]] التي استُدعيت عبرها وتضيفها إلى [[Kotlin/collections/Map|القاموس]].المُمرّر  <code>destination</code> حيث مفاتيحه تعيدها  الدالة الممرّرة <code>keySelector()‎</code>  مُطبّقة على كل عناصر [[Kotlin/Array|المصفوفة]] أو [[Kotlin/collections|المجموعة]]، وقيمُه [[Kotlin/collections/List|لوائح]] تضم العناصر المقابلة، وفي حال تمرير معامل ثالث <code>valueTransform</code> فإنّ القيم ستكون [[Kotlin/collections/List|لوائح]]  تضم ناتج تطبيق الدالة <code>valueTransform</code> على العناصر المقابلة . ثم تعيد القاموس<code>destination.</code>
+
إن كانت [[Kotlin/collections|المجموعة]] كبيرة، فيمكن تحديد جزءٍ أولي معين منها فقط لإضافته إلى السلسلة النصية؛ في هذه الحالة، تضاف سلسلة نصية معينة، مثل "..." أو "...إلخ" إلى السلسلة النصية الناتجة للدلالة على وجود جزء مقتطع.
 
==البنية العامة==
 
==البنية العامة==
 
<syntaxhighlight lang="kotlin">
 
<syntaxhighlight lang="kotlin">
inline fun <T, K, M : MutableMap<in K, MutableList<T>>> Array<out T>.groupByTo(
+
fun <T, A> Array<out T>.joinTo(
     destination: M,  
+
     buffer: A,
     keySelector: (T) -> K
+
    separator: CharSequence = ", ",
): M
+
    prefix: CharSequence = "",
inline fun <K, M : MutableMap<in K, MutableList<Byte>>> ByteArray.groupByTo(
+
    postfix: CharSequence = "",
     destination: M,  
+
    limit: Int = -1,
     keySelector: (Byte) -> K
+
    truncated: CharSequence = "...",  
): M
+
     transform: (T) -> CharSequence = null
inline fun <K, M : MutableMap<in K, MutableList<Short>>> ShortArray.groupByTo(
+
): A
     destination: M,  
+
fun <A> ByteArray.joinTo(
     keySelector: (Short) -> K
+
     buffer: A,
): M
+
    separator: CharSequence = ", ",
inline fun <K, M : MutableMap<in K, MutableList<Int>>> IntArray.groupByTo(
+
    prefix: CharSequence = "",
     destination: M,  
+
    postfix: CharSequence = "",
     keySelector: (Int) -> K
+
    limit: Int = -1,
): M
+
    truncated: CharSequence = "...",  
inline fun <K, M : MutableMap<in K, MutableList<Long>>> LongArray.groupByTo(
+
     transform: (Byte) -> CharSequence = null
     destination: M,  
+
): A
     keySelector: (Long) -> K
+
fun <A> ShortArray.joinTo(
): M
+
     buffer: A,
inline fun <K, M : MutableMap<in K, MutableList<Float>>> FloatArray.groupByTo(
+
    separator: CharSequence = ", ",  
     destination: M,  
+
     prefix: CharSequence = "",
     keySelector: (Float) -> K
+
    postfix: CharSequence = "",
): M
+
    limit: Int = -1,
inline fun <K, M : MutableMap<in K, MutableList<Double>>> DoubleArray.groupByTo(
+
    truncated: CharSequence = "...",
     destination: M,  
+
    transform: (Short) -> CharSequence = null
     keySelector: (Double) -> K
+
): A
): M
+
fun <A> IntArray.joinTo(
inline fun <K, M : MutableMap<in K, MutableList<Boolean>>> BooleanArray.groupByTo(
+
    buffer: A,
     destination: M,  
+
    separator: CharSequence = ", ",  
     keySelector: (Boolean) -> K
+
    prefix: CharSequence = "",
): M
+
    postfix: CharSequence = "",  
inline fun <K, M : MutableMap<in K, MutableList<Char>>> CharArray.groupByTo(
+
    limit: Int = -1,
     destination: M,  
+
     truncated: CharSequence = "...",  
     keySelector: (Char) -> K
+
     transform: (Int) -> CharSequence = null
): M
+
): 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
  
</syntaxhighlight>في حال استدعاء الدالة<code>groupByTo()‎</code> على [[Kotlin/Array|المصفوفات]] مع تمرير معاملين <code>destination</code> و<code>keySelector</code> فإنّها تُجمّع عناصر [[Kotlin/Array|المصفوفة]] الأصلية وتضيفها إلى [[Kotlin/collections/Map|القاموس]].المُمرّر  <code>destination</code> حيث مفاتيحه تعيدها الدالة الممرّرة <code>keySelector()‎</code>  مُطبّقة على كل عناصر [[Kotlin/Array|المصفوفة]] وقيمه [[Kotlin/collections/List|لوائح]] تضم العناصر المقابلة. ثم تعيد القاموس<code>destination.</code><syntaxhighlight lang="kotlin">
+
</syntaxhighlight>
inline fun <T, K, V, M : MutableMap<in K, MutableList<V>>> Array<out T>.groupByTo(
 
    destination: M,
 
    keySelector: (T) -> K,
 
    valueTransform: (T) -> V
 
): M
 
inline fun <K, V, M : MutableMap<in K, MutableList<V>>> ByteArray.groupByTo(
 
    destination: M,
 
    keySelector: (Byte) -> K,
 
    valueTransform: (Byte) -> V
 
): M
 
inline fun <K, V, M : MutableMap<in K, MutableList<V>>> ShortArray.groupByTo(
 
    destination: M,
 
    keySelector: (Short) -> K,
 
    valueTransform: (Short) -> V
 
): M
 
inline fun <K, V, M : MutableMap<in K, MutableList<V>>> IntArray.groupByTo(
 
    destination: M,
 
    keySelector: (Int) -> K,
 
    valueTransform: (Int) -> V
 
): M
 
inline fun <K, V, M : MutableMap<in K, MutableList<V>>> LongArray.groupByTo(
 
    destination: M,
 
    keySelector: (Long) -> K,
 
    valueTransform: (Long) -> V
 
): M
 
inline fun <K, V, M : MutableMap<in K, MutableList<V>>> FloatArray.groupByTo(
 
    destination: M,
 
    keySelector: (Float) -> K,
 
    valueTransform: (Float) -> V
 
): M
 
inline fun <K, V, M : MutableMap<in K, MutableList<V>>> DoubleArray.groupByTo(
 
    destination: M,
 
    keySelector: (Double) -> K,
 
    valueTransform: (Double) -> V
 
): M
 
inline fun <K, V, M : MutableMap<in K, MutableList<V>>> BooleanArray.groupByTo(
 
    destination: M,
 
    keySelector: (Boolean) -> K,
 
    valueTransform: (Boolean) -> V
 
): M
 
inline fun <K, V, M : MutableMap<in K, MutableList<V>>> CharArray.groupByTo(
 
    destination: M,
 
    keySelector: (Char) -> K,
 
    valueTransform: (Char) -> V
 
): M
 
  
</syntaxhighlight>في حال استدعاء الدالة<code>groupByTo()‎</code> على [[Kotlin/Array|المصفوفات]] مع تمرير ثلاث معاملات <code>destination</code> و <code>valueTransform</code> و <code>keySelector</code> فإنّها تُجمّع العناصر المعادة من قبل الدالة  <code>valueTransform()‎</code> مُطبّقة على كل عناصر [[Kotlin/Array|المصفوفة]] وتربطها بالمفتاح الذي تعيده الدالة<code>keySelector()‎</code> مطبقة على على عناصر [[Kotlin/Array|المصفوفة]] وتضيفها إلى [[Kotlin/collections/Map|القاموس]] المُمرّر  <code>destination</code> حيث كل مفتاح مرتبط [[Kotlin/collections/List|بلائحة]] العناصر المقابلة. ثم تعيد [[Kotlin/collections/Map|القاموس]] <code>destination.</code><syntaxhighlight lang="kotlin">
+
== المعاملات ==
inline fun <T, K> Iterable<T>.groupBy(
 
    keySelector: (T) -> K
 
): Map<K, List<T>>
 
</syntaxhighlight>في حال استدعاء الدالة<code>groupByTo()‎</code> على [[Kotlin/collections|المجموعات]] مع تمرير معاملين <code>destination</code> و<code>keySelector</code> فإنّها تُجمّع عناصر  [[Kotlin/collections|المجموعة]] الأصلية وتضيفها إلى [[Kotlin/collections/Map|القاموس]].المُمرّر  <code>destination</code> حيث مفاتيحه تعيدها الدالة الممرّرة <code>keySelector()‎</code>  مُطبّقة على كل عناصر  [[Kotlin/collections|المجموعة]] وقيمه [[Kotlin/collections/List|لوائح]] تضم العناصر المقابلة. ثم تعيد القاموس<code>destination.</code><syntaxhighlight lang="kotlin">
 
inline fun <T, K, V> Iterable<T>.groupBy(
 
    keySelector: (T) -> K,
 
    valueTransform: (T) -> V
 
): Map<K, List<V>>
 
</syntaxhighlight>في حال استدعاء الدالة<code>groupByTo()‎</code> على [[Kotlin/collections|المجموعات]] مع تمرير ثلاث معاملات <code>destination</code> و <code>valueTransform</code> و <code>keySelector</code> فإنّها تُجمّع العناصر المعادة من قبل الدالة  <code>valueTransform()‎</code> مُطبّقة على كل عناصر  [[Kotlin/collections|المجموعة]] وتربطها بالمفتاح الذي تعيده الدالة<code>keySelector()‎</code> مطبقة على على عناصر  [[Kotlin/collections|المجموعة]] وتضيفها إلى [[Kotlin/collections/Map|القاموس]] المُمرّر  <code>destination</code> حيث كل مفتاح مرتبط [[Kotlin/collections/List|بلائحة]] العناصر المقابلة. ثم تعيد [[Kotlin/collections/Map|القاموس]] <code>destination</code>.
 
  
يُلاحَظ وجود الكلمة المفتاحية <code>inline</code> للدلالة على أن هذه الدالة مباشرة، وللمزيد من التفاصيل راجع <nowiki/>[[Kotlin/inline functions|توثيق الدوال المباشرة (inline functions)]].
+
=== <code>buffer</code> ===
==القيم المٌعادة==
+
كائن موجود مسبقًا يمثل الوجهة التي سيضاف إليها الناتج.
[[Kotlin/collections/Map|القاموس]] <code>destination</code> المُمرّر إلى الدالة<code>()groupByTo</code>.
+
 
 +
=== <code>separator</code> ===
 +
الفاصل المستعمل في فصل العناصر. القيمة الافتراضية هي: " ,".
 +
 
 +
=== <code>prefix</code> ===
 +
البادئة المراد إضافتها إلى بداية العناصر. القيمة الافتراضية هي: "".
 +
 
 +
=== <code>postfix</code> ===
 +
اللاحقة المراد إضافتها إلى نهاية العناصر. القيمة الافتراضية هي: "".
 +
 
 +
=== <code>limit</code> ===
 +
عدد صحيح يمثل العدد الأقصى للعناصر المراد تطبيق العملية عليها. القيمة الافتراضية هي: 1-.
 +
 
 +
=== <code>truncated</code> ===
 +
سلسلة نصية تمثل الجزء الذي سيحل مكان الجزء المقتطع من العناصر. القيمة الافتراضية هي: "...".
 +
 
 +
=== <code>transform</code> ===
 +
دالة تطبق على كل عنصر من عناصر [[Kotlin/Array|المصفوفة]] أو [[Kotlin/collections|المجموعة]] المعطاة، إذ يمرر إليها العنصر وتعيد السلسلة النصية المقابلة له.
 +
 
 +
==القيم المعادة==
 +
تُعاد السلسلة النصية <code>buffer</code> مضافًا إليها عناصر [[Kotlin/Array|المصفوفة]] أو [[Kotlin/collections|المجموعة]] المعطاة (أو الجزء <code>limit</code> الأولي منها فقط) بعد فصلها بالفاصل <code>separator</code> وإضافة البادئة <code>prefix</code> واللاحقة <code>postfix</code> إليها إن أعطيت هذه المعاملات. عند تحديد المعامل <code>limit</code>، ستضاف السلسلة النصية <code>truncated</code> (قيمتها الافتراضية هي "...") إلى نهاية السلسلة النصية المعادة لتشير إلى وجود جزء مقتطع.
 
==أمثلة==
 
==أمثلة==
===استخدام الدالة <code>()joinTo</code> مع المصفوفات مع تمرير معاملين===
+
===استخدام الدالة <code>()joinTo</code> مع كامل عناصر قائمة===
تعرف الشيفرة الآتية <nowiki/>[[Kotlin/Array|مصفوفة]] باسم <code>array</code> مكونة من ست [[Kotlin/collections/String|سلاسل نصية]] باستخدام الدالة <code>()arrayOf</code>، ثم تُنشئ [[Kotlin/collections/Map|قاموسًا]] فارغًا باسم <code>map</code> باستخدام الدالة <code>()mutableMapOf</code>، ثم تستخدم الدالة <code>()joinTo</code> على <code>array</code> بتمرير [[Kotlin/collections/Map|القاموس]] <code>map</code> و دالة تعيد طول [[Kotlin/collections/String|السلسلة النصية]] المُمرّرة، ثم تطبع [[Kotlin/collections/Map|القاموس]] <code>map</code>:<syntaxhighlight lang="kotlin">
+
تعرف الشيفرة الآتية <nowiki/>[[Kotlin/String|سلسة نصية]] باسم <code>sb</code> باستخدام الدالة <code>()StringBuilder</code> ثم تُنشئ [[Kotlin/collections/List|قائمة]] باسم <code>numbers</code> باستخدام الدالة <code>()listOf</code>. تُستعمَل بعد ذلك الدالة <code>()joinTo</code> لإضافة بادئة ولاحقة إلى عناصر تلك القائمة ثمَّ إضافتها إلى السلسلة النصية <code>sb</code>:<syntaxhighlight lang="kotlin">
 
fun main(args: Array<String>) {
 
fun main(args: Array<String>) {
val array = arrayOf("a", "abc", "ab", "def","avde" ,"abcd")
+
    val sb = StringBuilder("An existing string and a list: ")
val map: MutableMap<Int, MutableList<String>> = mutableMapOf()
+
    val numbers = listOf(1, 2, 3)
      
+
     println(numbers.joinTo(sb, prefix = "[", postfix = "]").toString()) // An existing string and a list: [1, 2, 3]
array.groupByTo ( map, { it.length })
 
   
 
print(map) // {1=[a], 3=[abc, def], 2=[ab], 4=[avde, abcd]}
 
 
}
 
}
 
</syntaxhighlight>
 
</syntaxhighlight>
===استخدام الدالة <code>()joinTo</code> مع المصفوفات مع تمرير ثلاث معاملات===
+
===استخدام الدالة <code>()joinTo</code> مع جزء محدد من عناصر قائمة===
تعرف الشيفرة الآتية <nowiki/>[[Kotlin/Array|مصفوفة]] باسم <code>array</code> مكونة من ست [[Kotlin/collections/String|سلاسل نصية]] باستخدام الدالة <code>()arrayOf</code>، ثم تُنشئ  [[Kotlin/collections/Map|قاموسًا]] فارغًا باسم <code>map</code> باستخدام الدالة <code>()mutableMapOf</code>، ثم تستدعي الدالة <code>()groupByTo</code> على <code>array</code> بتمرير [[Kotlin/collections/Map|القاموس]] <code>map</code> و دالة تعيد طول [[Kotlin/collections/String|السلسلة النصية]] المُمرّرة ودالة تحوّل [[Kotlin/collections/String|السلاسل النصية]] إلى [[Kotlin/collections/String|سلاسل نصية]] ذات حروف كبيرة ، ثم تطبع [[Kotlin/collections/Map|القاموس]] <code>map</code>:<syntaxhighlight lang="kotlin">
+
تعرِّف الشيفرة الآتية <nowiki/>[[Kotlin/String|سلسة نصية]] باسم <code>firstNumber</code> باستخدام الدالة <code>()StringBuilder</code> ثمَّ تستخدم الدالة <code>()joinTo</code> لاقتطاع أول خمسة عناصر من <code>lotOfNumbers</code> وإضافتها إلى تلك السلسلة النصية:<syntaxhighlight lang="kotlin">
 
fun main(args: Array<String>) {
 
fun main(args: Array<String>) {
val array = arrayOf("a", "abc", "ab", "def","avde" ,"abcd")
+
    val lotOfNumbers: Iterable<Int> = 1..100
val map: MutableMap<Int, MutableList<String>> = mutableMapOf()
+
    val firstNumbers = StringBuilder("First five numbers: ")
      
+
     println(lotOfNumbers.joinTo(firstNumbers, limit = 5).toString()) // First five numbers: 1, 2, 3, 4, 5, ...
array.groupByTo ( map, { it.length }, {it.toUpperCase()})
 
   
 
print(map) // {1=[A], 3=[ABC, DEF], 2=[AB], 4=[AVDE, ABCD]}
 
 
}
 
}
 
</syntaxhighlight>
 
</syntaxhighlight>
 
==انظر أيضًا==
 
==انظر أيضًا==
<code>[[Kotlin/collections/groupByTo|groupBy()]]</code>‎: تعيد [[Kotlin/collections/Map|قاموسًا]] يُجمّع عناصر [[Kotlin/Array|المصفوفة]] أو [[Kotlin/collections|المجموعة]] التي استُدعيت عبرها حيث مفاتيحه تعيدها الدالة المُمرّرة <code>keySelector</code> وقيمه لوائحُ تضم عناصر  [[Kotlin/Array|المصفوفة]] أو [[Kotlin/collections|المجموعة]] (أو ناتج تمرير عناصر [[Kotlin/Array|المصفوفة]] أو [[Kotlin/collections|المجموعة]] على الدالة <code>valueTransform</code> في حال تمريرها).
+
* الدالة [[Kotlin/collections/joinToString|<code>joinToString()</code>]]‎: تضيف بادئة ولاحقة إلى جميع عناصر [[Kotlin/Array|المصفوفة]] أو [[Kotlin/collections|المجموعة]] التي استُدعيت معها (أو جزءٍ منها) بعد فصل عناصرها بفاصلة معينة ثمَّ تضع الناتج في [[Kotlin/String|سلسة نصية]] جديدة تنشئها آنذاك.
 +
* الدالة <code>[[Kotlin/collections/fill|fill()‎]]</code>: تبدِّل قيمة جديدة معطاة مكان عناصر محدَّدة في <nowiki/>[[Kotlin/Array|المصفوفة]] أو القائمة التي تستدعى معها.
 +
 
 
==مصادر==
 
==مصادر==
[https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/group-by-to.html الدالة joinTo()‎ في التوثيق الرسمي للمكتبة القياسية في لغة Kotlin]
+
* [https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/join-to.html صفحة الدالة joinTo()‎ في التوثيق الرسمي للمكتبة القياسية في لغة Kotlin]
 
[[تصنيف:Kotlin]]
 
[[تصنيف:Kotlin]]
[[تصنيف:Kotlin Functions]]
+
[[تصنيف:Kotlin Function]]
 +
[[تصنيف:Kotlin Collection]]

المراجعة الحالية بتاريخ 08:48، 8 سبتمبر 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

كائن موجود مسبقًا يمثل الوجهة التي سيضاف إليها الناتج.

separator

الفاصل المستعمل في فصل العناصر. القيمة الافتراضية هي: " ,".

prefix

البادئة المراد إضافتها إلى بداية العناصر. القيمة الافتراضية هي: "".

postfix

اللاحقة المراد إضافتها إلى نهاية العناصر. القيمة الافتراضية هي: "".

limit

عدد صحيح يمثل العدد الأقصى للعناصر المراد تطبيق العملية عليها. القيمة الافتراضية هي: 1-.

truncated

سلسلة نصية تمثل الجزء الذي سيحل مكان الجزء المقتطع من العناصر. القيمة الافتراضية هي: "...".

transform

دالة تطبق على كل عنصر من عناصر المصفوفة أو المجموعة المعطاة، إذ يمرر إليها العنصر وتعيد السلسلة النصية المقابلة له.

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

تُعاد السلسلة النصية 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()‎: تبدِّل قيمة جديدة معطاة مكان عناصر محدَّدة في المصفوفة أو القائمة التي تستدعى معها.

مصادر