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

من موسوعة حسوب
لا ملخص تعديل
مراجعة وتدقيق.
 
سطر 1: سطر 1:
<noinclude>{{DISPLAYTITLE: الدالة <code>text.chunkedSequence()‎</code> في لغة Kotlin}}</noinclude>
<noinclude>{{DISPLAYTITLE: الدالة <code>CharSequence.chunkedSequence()‎</code> في Kotlin}}</noinclude>
تقطِّع الدالة <code>chunkedSequence()‎</code> [[Kotlin/CharSequence/index|سلسلة المحارف]] التي استُدعيت معها إلى عدة أجزاء لا يتجاوز كل منها <nowiki/>حجمًا معينًا وإعادتها أو تطبيق دالة معينة على كل منها وإعادة الناتج الذي تعيده.
تقطِّع الدالة <code>chunkedSequence()‎</code> [[Kotlin/CharSequence/index|سلسلة المحارف]] التي استُدعيت معها إلى عدة أجزاء لا يتجاوز كل منها <nowiki/>حجمًا معينًا وتعيدها في [[Kotlin/sequences/Sequence|سلسلة]] أو تطبِّق دالة معينة على كل منها وتضع الناتج الذي تعيده هذه الدالة في [[Kotlin/sequences/Sequence|سلسلة]].
==البنية العامة==
==البنية العامة==
<syntaxhighlight lang="kotlin">
<syntaxhighlight lang="kotlin">
سطر 38: سطر 38:
</syntaxhighlight>
</syntaxhighlight>
==انظر أيضًا==
==انظر أيضًا==
*<code>[[Kotlin/kotlin.text/associateBy|associateBy()]]</code>: تعيد قاموسًا (map) يحتوي عناصر سلسلة الحروف التي استُدعيت عبرها مفهرسةً بقيمة المفتاح المعاد من تمرير تلك العناصر إلى الدالة <code>keySelector</code>.
*الدالة <code>[[Kotlin/kotlin.text/chunked|chunked()]]</code>: تقطِّع [[Kotlin/CharSequence/index|سلسلة المحارف]] التي استُدعيت معها إلى عدة أجزاء لا يتجاوز كل منها حجمًا معينًا وتعيدها في [[Kotlin/collections/List|قائمة]] أو تطبِّق دالة معينة على كل منها وتضع الناتج الذي تعيده هذه الدالة في [[Kotlin/collections/List|قائمة]].
 
*الدالة <code>[[Kotlin/kotlin.text/asSequence|asSequence()]]‎</code>: تنشئ نسخةً من الواجهة <code>[[Kotlin/sequences/Sequence|Sequence]]</code> التي تغلّف <nowiki/>[[Kotlin/CharSequence|سلسلة المحارف]] التي استُدعيت معها لأجل استعمالها في الحلقات التكرارية، إذ تعيد كل محرف من محارفها عندما تُستخدَم في حلقات التكرار (مثل حلقة <code>[[Kotlin/control flow#.D8.AA.D8.B9.D8.A8.D9.8A.D8.B1 for|for]]</code>).
*<code>[[Kotlin/kotlin.text/associateByTo|associateByTo()]]‎</code>: تعيد قاموسا متغيرا (mutable map) يحتوي أزواجًا من "مفتاح/قيمة"، إذ القيمة هي عناصر سلسلة الحروف التي استُدعيت عبرها، والمفتاح هو الناتج المعاد من تمرير تلك العناصر إلى الدالة <code>keySelector</code>. 
*<code>[[Kotlin/kotlin.text/asSequence|asSequence()]]‎</code>: تنشئ كائنًا من الصنف <code>Sequence</code> والذي يُغلّف سلسلة الحروف التي استُدعيت عبرها، لأجل استعمالها في الحلقات التكرارية.
==مصادر==
==مصادر==
*[http://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/chunked-sequence.html صفحة الدالة CharSequence.chunkedSequence()‎ في التوثيق الرسميّ للمكتبة القياسيّة في لغة Kotlin.]
*[http://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/chunked-sequence.html صفحة الدالة CharSequence.chunkedSequence()‎ في التوثيق الرسميّ للمكتبة القياسيّة في لغة Kotlin.]
[[تصنيف:Kotlin]]
[[تصنيف:Kotlin]]
[[تصنيف:Kotlin Function]]
[[تصنيف:Kotlin Function]]
[[تصنيف:Kotlin Text]]
[[تصنيف:Kotlin CharSequence]]

المراجعة الحالية بتاريخ 10:24، 2 سبتمبر 2018

تقطِّع الدالة chunkedSequence()‎ سلسلة المحارف التي استُدعيت معها إلى عدة أجزاء لا يتجاوز كل منها حجمًا معينًا وتعيدها في سلسلة أو تطبِّق دالة معينة على كل منها وتضع الناتج الذي تعيده هذه الدالة في سلسلة.

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

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

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

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

المعاملات

size

عدد صحيح يمثل عدد العناصر المراد اقتطاعها ووضعها في كل سلسلة نصية. يجب أن يكون هذا العدد موجبًا، ويمكن أن يكون أكبر من عدد عناصر سلسلة المحارف المعطاة. يكون غالبًا حجم الجزء الأخير المقتطع أصغر من القيمة size.

transform

دالةٌ يراد تطبيقها على كل جزء مقتطع من سلسلة المحارف المعطاة.

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

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

تعاد سلسلة تحوي جميع الأجزاء المقتطعة من سلسلة المحارف المعطاة التي لا يتجاوز حجمها القيمة size أو تحوي ناتج تطبيق الدالة transform على كل جزء من تلك الأجزاء المقتطعة التي لا يتجاوز حجمها القيمة size.

أمثلة

مثالٌ على استعمال الدالة chunkedSequence()‎:

import java.util.*

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]
}

انظر أيضًا

  • الدالة chunked()‎: تقطِّع سلسلة المحارف التي استُدعيت معها إلى عدة أجزاء لا يتجاوز كل منها حجمًا معينًا وتعيدها في قائمة أو تطبِّق دالة معينة على كل منها وتضع الناتج الذي تعيده هذه الدالة في قائمة.
  • الدالة asSequence(): تنشئ نسخةً من الواجهة Sequence التي تغلّف سلسلة المحارف التي استُدعيت معها لأجل استعمالها في الحلقات التكرارية، إذ تعيد كل محرف من محارفها عندما تُستخدَم في حلقات التكرار (مثل حلقة for).

مصادر