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