الفرق بين المراجعتين لصفحة: «Kotlin/kotlin.text/buildString»

من موسوعة حسوب
لا ملخص تعديل
لا ملخص تعديل
سطر 1: سطر 1:
<noinclude>{{DISPLAYTITLE: الدالة <code>text.buildString()‎</code> في لغة Kotlin}}</noinclude>
<noinclude>{{DISPLAYTITLE: الدالة <code>text.buildString()‎</code> في لغة Kotlin}}</noinclude>
تملأ الدالة <code>buildString()‎</code> [[Kotlin/MutableMap|القاموس المتغير]] <code>destination</code>  بأزواج من "مفتاح/قيمة"، حيث القيمة هي عناصر [[Kotlin/CharSequence/index|سلسلة الحروف]] التي استُدعيت عبرها، والمفتاح هو الناتج المعاد من تمرير تلك العناصر إلى الدالة <code>transform</code>.
تبني الدالة <code>buildString()‎</code> [[Kotlin/String|سلسلة نصية]] عبر ملأ الكائن من نوع <code>StringBuilder</code>  المُنشأ حديثَا باستخدام  الدالة المُمرّرة <code>builderAction‎</code> ثم تُحولها إلى [[Kotlin/String|سلسلة نصية]]. في حال تمرير وسيط <code>capacity</code> من نوع <code>Int</code> فإنّ الكائن <code>StringBuilder</code> سيأخذ قيمه الابتدائية انطلاقا من<code>capacity.</code>
 
إن كان لعنصرين نفس المفتاح (key) بعد تطبيق الدالة <code>keySelector</code>، فإنَّ الأخير هو الذي سيُضاف إلى القاموس.  
==البنية العامة==
==البنية العامة==
<syntaxhighlight lang="kotlin">
<syntaxhighlight lang="kotlin">
inline fun <K, V, M : MutableMap<in K, in V>> CharSequence.associateTo(
inline fun buildString(
     destination: M,  
     capacity: Int,  
     transform: (Char) -> Pair<K, V>
     builderAction: StringBuilder.() -> Unit
): M
): String
</syntaxhighlight>يلاحظ وجود الكلمة المفتاحية <code>inline</code> يدل على أنَّ هذه الدالة مباشرة (للمزيد من التفاصيل راجع <nowiki/>[[Kotlin/inline functions|توثيق الدوال المباشرة (inline functions)]]).
</syntaxhighlight>يلاحظ وجود الكلمة المفتاحية <code>inline</code> يدل على أنَّ هذه الدالة مباشرة (للمزيد من التفاصيل راجع <nowiki/>[[Kotlin/inline functions|توثيق الدوال المباشرة (inline functions)]]).
==القيم المعادة==
==القيم المعادة==
[[Kotlin/MutableMap|قاموس متغير]].
[[Kotlin/String|سلسلة نصية]].
==أمثلة==
==أمثلة==
===استخدام الدالة <code>()buildString</code> مع سلسلة نصية===
===استخدام الدالة <code>()buildString</code> مع سلسلة نصية===
تعرِّف الشيفرة الآتية سلسلة نصية باسم <code>str</code>، ثمَّ تنشئ  [[Kotlin/MutableMap|قاموسا متغيرا]]  باسم <code>map،</code> ثم تمرّر الدالة <code>()func</code> (التي تحول الحرف إلى زوج مكون من الحرف في الحالة الكبيرة UpperCase والحالة الصغيرة LowerCase) و<nowiki/>[[Kotlin/MutableMap|القاموس المتغير]] <code>map</code> إلى <code>()buildString</code>، ثمَّ تطبع الناتج:<syntaxhighlight lang="kotlin">
تعرِّف الشيفرة الآتية سلسلة نصية باسم <code>x</code> عبر الدالة <code>()buildString</code>، مع تمرير دالة إليها كوسيط<nowiki/>، ثمَّ تطبع الناتج:<syntaxhighlight lang="kotlin">
val x = buildString {
val x = buildString {
     append("Lucky numbers: ")
     append("Lucky numbers: ")
سطر 33: سطر 31:


==مصادر==
==مصادر==
*[http://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/associate-to.html الدالة text.buildString()‎ في التوثيق الرسميّ للمكتبة القياسيّة في لغة Kotlin.]
*[http://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/build-string.html الدالة text.buildString()‎ في التوثيق الرسميّ للمكتبة القياسيّة في لغة Kotlin.]
[[تصنيف:Kotlin]]
[[تصنيف:Kotlin]]
[[تصنيف:Kotlin Functions]]
[[تصنيف:Kotlin Functions]]

مراجعة 19:07، 7 يوليو 2018

تبني الدالة buildString()‎ سلسلة نصية عبر ملأ الكائن من نوع StringBuilder المُنشأ حديثَا باستخدام الدالة المُمرّرة builderAction‎ ثم تُحولها إلى سلسلة نصية. في حال تمرير وسيط capacity من نوع Int فإنّ الكائن StringBuilder سيأخذ قيمه الابتدائية انطلاقا منcapacity.

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

inline fun buildString(
    capacity: Int, 
    builderAction: StringBuilder.() -> Unit
): String

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

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

سلسلة نصية.

أمثلة

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

تعرِّف الشيفرة الآتية سلسلة نصية باسم x عبر الدالة ()buildString، مع تمرير دالة إليها كوسيط، ثمَّ تطبع الناتج:

val x = buildString {
    append("Lucky numbers: ")
    for (i in 1..10) {
        append("${(Math.random() * 100).toInt()}, ")
    }
}

fun main(args: Array<String>) {
    println(x) // Lucky numbers: 12, 60, 56, 27, 30, 50, 26, 72, 70, 27, 
}

انظر أيضًا

  • associateBy(): تعيد قاموسًا (map) يحتوي عناصر سلسلة الحروف التي استُدعيت عبرها مفهرسةً بقيمة المفتاح المعاد من تمرير تلك العناصر إلى الدالة keySelector.
  • associateByTo(): تعيد قاموسا متغيرا (mutable map) يحتوي أزواجًا من "مفتاح/قيمة"، إذ القيمة هي عناصر سلسلة الحروف التي استُدعيت عبرها، والمفتاح هو الناتج المعاد من تمرير تلك العناصر إلى الدالة keySelector
  • asSequence(): تنشئ كائنًا من الصنف Sequence والذي يُغلّف سلسلة الحروف التي استُدعيت عبرها، لأجل استعمالها في الحلقات التكرارية.

مصادر