الفرق بين المراجعتين ل"Kotlin/kotlin.text/chunkedSequence"
ط (استبدال النص - 'Kotlin Functions' ب'Kotlin Function') |
جميل-بيلوني (نقاش | مساهمات) |
||
سطر 1: | سطر 1: | ||
<noinclude>{{DISPLAYTITLE: الدالة <code>text.chunkedSequence()</code> في لغة Kotlin}}</noinclude> | <noinclude>{{DISPLAYTITLE: الدالة <code>text.chunkedSequence()</code> في لغة Kotlin}}</noinclude> | ||
− | + | تقطِّع الدالة <code>chunkedSequence()</code> [[Kotlin/CharSequence/index|سلسلة المحارف]] التي استُدعيت معها إلى عدة أجزاء لا يتجاوز كل منها <nowiki/>حجمًا معينًا وإعادتها أو تطبيق دالة معينة على كل منها وإعادة الناتج الذي تعيده. | |
==البنية العامة== | ==البنية العامة== | ||
<syntaxhighlight lang="kotlin"> | <syntaxhighlight lang="kotlin"> | ||
fun CharSequence.chunkedSequence(size: Int): Sequence<String> | fun CharSequence.chunkedSequence(size: Int): Sequence<String> | ||
− | |||
− | |||
− | |||
fun <R> CharSequence.chunkedSequence( | fun <R> CharSequence.chunkedSequence( | ||
size: Int, | size: Int, | ||
transform: (CharSequence) -> R | transform: (CharSequence) -> R | ||
): Sequence<R> | ): Sequence<R> | ||
− | </syntaxhighlight>'''بيئة التشغيل المطلوبة: Kotlin 1.2 | + | </syntaxhighlight>'''بيئة التشغيل المطلوبة:''' Kotlin 1.2. |
+ | |||
+ | == المعاملات == | ||
+ | |||
+ | === <code>size</code> === | ||
+ | عدد صحيح يمثل عدد العناصر المراد اقتطاعها ووضعها في كل سلسلة نصية. يجب أن يكون هذا العدد موجبًا، ويمكن أن يكون أكبر من عدد عناصر سلسلة المحارف المعطاة. يكون غالبًا حجم الجزء الأخير المقتطع أصغر من القيمة <code>size</code>. | ||
+ | |||
+ | === <code>transform</code> === | ||
+ | دالةٌ يراد تطبيقها على كل جزء مقتطع من سلسلة المحارف المعطاة. | ||
− | + | لاحظ أنّ [[Kotlin/CharSequence/index|سلسلة المحارف]] المُمرّرة إلى الدالة <code>transform</code> سريعة الزوال (ephemeral)، وهي متاحة فقط داخل الدالة. بناءً على ذلك، لا يجب أن تُخزَّن بأي طريقة إلا إن أنشأت مقتطفًا (snapshot) منها. | |
− | |||
==القيم المعادة== | ==القيم المعادة== | ||
− | [[Kotlin/Sequence|سلسلة]]. | + | تعاد [[Kotlin/sequences/Sequence|سلسلة]] تحوي جميع الأجزاء المقتطعة من سلسلة المحارف المعطاة التي لا يتجاوز حجمها القيمة <code>size</code> أو تحوي ناتج تطبيق الدالة <code>transform</code> على كل جزء من تلك الأجزاء المقتطعة التي لا يتجاوز حجمها القيمة <code>size</code>. |
==أمثلة== | ==أمثلة== | ||
− | + | مثالٌ على استعمال الدالة <code>chunkedSequence()</code>:<syntaxhighlight lang="kotlin"> | |
− | + | import java.util.* | |
+ | |||
fun main(args: Array<String>) { | fun main(args: Array<String>) { | ||
− | val codonTable = mapOf("ATT" to "Isoleucine", "CAA" to "Glutamine", "CGC" to "Arginine", "GGC" to "Glycine") | + | val codonTable = mapOf("ATT" to "Isoleucine", "CAA" to "Glutamine", "CGC" to "Arginine", "GGC" to "Glycine") |
− | + | val dnaFragment = "ATTCGCGGCCGCCAACGG" | |
− | val dnaFragment = "ATTCGCGGCCGCCAACGG" | ||
− | val proteins = dnaFragment.chunkedSequence(3) { codon: CharSequence -> codonTable[codon.toString()] ?: error("Unknown codon") } | + | val proteins = dnaFragment.chunkedSequence(3) { codon: CharSequence -> codonTable[codon.toString()] ?: error("Unknown codon") } |
− | // sequence is evaluated lazily, so that unknown codon is not reached | + | // sequence is evaluated lazily, so that unknown codon is not reached |
− | println(proteins.take(5).toList()) // [Isoleucine, Arginine, Glycine, Arginine, Glutamine] | + | println(proteins.take(5).toList()) // [Isoleucine, Arginine, Glycine, Arginine, Glutamine] |
} | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | + | ==انظر أيضًا== | |
*<code>[[Kotlin/kotlin.text/associateBy|associateBy()]]</code>: تعيد قاموسًا (map) يحتوي عناصر سلسلة الحروف التي استُدعيت عبرها مفهرسةً بقيمة المفتاح المعاد من تمرير تلك العناصر إلى الدالة <code>keySelector</code>. | *<code>[[Kotlin/kotlin.text/associateBy|associateBy()]]</code>: تعيد قاموسًا (map) يحتوي عناصر سلسلة الحروف التي استُدعيت عبرها مفهرسةً بقيمة المفتاح المعاد من تمرير تلك العناصر إلى الدالة <code>keySelector</code>. | ||
سطر 39: | سطر 43: | ||
*<code>[[Kotlin/kotlin.text/asSequence|asSequence()]]</code>: تنشئ كائنًا من الصنف <code>Sequence</code> والذي يُغلّف سلسلة الحروف التي استُدعيت عبرها، لأجل استعمالها في الحلقات التكرارية. | *<code>[[Kotlin/kotlin.text/asSequence|asSequence()]]</code>: تنشئ كائنًا من الصنف <code>Sequence</code> والذي يُغلّف سلسلة الحروف التي استُدعيت عبرها، لأجل استعمالها في الحلقات التكرارية. | ||
==مصادر== | ==مصادر== | ||
− | *[http://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/chunked-sequence.html الدالة | + | *[http://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/chunked-sequence.html صفحة الدالة CharSequence.chunkedSequence() في التوثيق الرسميّ للمكتبة القياسيّة في لغة Kotlin.] |
[[تصنيف:Kotlin]] | [[تصنيف:Kotlin]] | ||
[[تصنيف:Kotlin Function]] | [[تصنيف:Kotlin Function]] |
مراجعة 09:15، 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]
}
انظر أيضًا
associateBy()
: تعيد قاموسًا (map) يحتوي عناصر سلسلة الحروف التي استُدعيت عبرها مفهرسةً بقيمة المفتاح المعاد من تمرير تلك العناصر إلى الدالةkeySelector
.
associateByTo()
: تعيد قاموسا متغيرا (mutable map) يحتوي أزواجًا من "مفتاح/قيمة"، إذ القيمة هي عناصر سلسلة الحروف التي استُدعيت عبرها، والمفتاح هو الناتج المعاد من تمرير تلك العناصر إلى الدالةkeySelector
.asSequence()
: تنشئ كائنًا من الصنفSequence
والذي يُغلّف سلسلة الحروف التي استُدعيت عبرها، لأجل استعمالها في الحلقات التكرارية.