الدالة text.chunkedSequence()‎ في لغة Kotlin

من موسوعة حسوب
< Kotlin‏ | kotlin.text
مراجعة 11:37، 30 أغسطس 2018 بواسطة عبد اللطيف ايمش (نقاش | مساهمات) (استبدال النص - 'Kotlin Functions' ب'Kotlin Function')
اذهب إلى التنقل اذهب إلى البحث

تُقسّم الدالة chunkedSequence()‎ سلسلة الحروف التي استُدعيت عبرها إلى سلسلاتتحتوي سلاسل نصية، بحيث لا يتجاوز تعدادها العدد المُمرّر size.

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

fun CharSequence.chunkedSequence(size: Int): Sequence<String>

بيئة التشغيل المطلوبة: Kotlin 1.2 تُقسّم الدالة chunkedSequence()‎ سلسلة الحروف التي استُدعيت عبرها إلى سلسلات تحتوي سلاسل نصية، بحيث لا يتجاوز تعدادها العدد المُمرّر size. السلسلة النصيةالأخيرة قد يكون تعدادها أقل من size.

fun <R> CharSequence.chunkedSequence(
    size: Int, 
    transform: (CharSequence) -> R
): Sequence<R>

بيئة التشغيل المطلوبة: Kotlin 1.2

تُقسّم الدالة chunkedSequence()‎ سلسلة الحروف التي استُدعيت عبرها إلى سلسلات تحتوي سلاسل نصية، بحيث لا يتجاوز تعدادها العدد المُمرّر size. ومع تطبيق الدالة المُمرّرة transform على كل منها.

لاحظ أنّ سلسلة الحروف المُمرّرة إلى الدالة transform سريعة الزوال (ephemeral)، وهي متاحة فقط داخل الدالة. لذلك لا يجب عليك أن تُخزّنها بأي طريقة، إلا إن أعددت مقتطفًا (snapshot) منها. سلسلة الحروف الأخيرة قد يكون تعدادها أقل من size.

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

سلسلة.

أمثلة

استخدام الدالة ()chunkedSequence

تعرّف الشيفرة الآتية قاموسًا باسم codonTable، و سلسلة نصية باسم dnaFragment، ثم تستدعي الدالة ()chunkedSequence عبر dnaFragment مع تمرير دالة كوسيط، ثمَّ تطبع الناتج:

fun main(args: Array<String>) {
val codonTable = mapOf("ATT" to "Isoleucine", "CAA" to "Glutamine", "CGC" to "Arginine", "GGC" to "Glycine")

val dnaFragment = "ATTCGCGGCCGCCAACGG"

val proteins = dnaFragment.chunkedSequence(3) { codon: CharSequence -> codonTable[codon.toString()] ?: error("Unknown codon") }

// sequence is evaluated lazily, so that unknown codon is not reached
println(proteins.take(5).toList()) // [Isoleucine, Arginine, Glycine, Arginine, Glutamine]
}

انظر أيضًا

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

مصادر