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

من موسوعة حسوب

تعيد الدالة windowed()‎ لائحة مكونة من سلاسل نصية مُقتطفة من سلسلة الحروف التي استُدعيت عبرها (انظر فقرة البنية العامة).

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

inline fun CharSequence.trimEnd(
    predicate: (Char) -> Boolean
): CharSequence

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

تعيد الدالة windowed()‎ لائحة مكونة من سلاسل نصية بطول يساوي size مُقتطفة من سلسلة الحروف التي استُدعيت عبرها، والتي تقتطفها بالتدرج بحيث تقفز في كل مرة step حرفا. السلاسل النصية الأخيرة قد يكون طولها أقل من size.

كلا الوسيطين step و size ينبغي أن يكونا موجبين، ويمكن أن يكونا أكبر من طول سلسلة الحروف الأصلية.

الوسيط partialWindows يحدد ما إذا كانت الدالة ستعيد السلاسل النصية الجزئية في الأخير، وقيمتها الإفتراضية هي false.

fun <R> CharSequence.windowed(
    size: Int, 
    step: Int = 1, 
    partialWindows: Boolean = false, 
    transform: (CharSequence) -> R
): List<R>

تعيد الدالة windowed()‎ لائحة مكونة من نتائج تطبيق الدالة transform على السلاسل النصية المُقتطفة من سلسلة الحروف التي استُدعيت عبرها والتي طولها يساوي size وتقتطفها بالتدرج بحيث تقفز في كل مرة step حرفا. السلاسل النصية الأخيرة قد يكون طولها أقل من size.

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

كلا الوسيطين step و size ينبغي أن يكونا موجبين، ويمكن أن يكونا أكبر من طول سلسلة الحروف الأصلية.

الوسيط partialWindows يحدد ما إذا كانت الدالة ستعيد السلاسل النصية الجزئية في الأخير، وقيمتها الإفتراضية هي false.

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

لائحة مكونة من سلاسل نصية.

أمثلة

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

تستدعي الشيفرة الآتية الدالة ()windowed عبر عدة سلاسل نصية وتمرر إليها عددين كوسيطين، وتطبع الناتج:

fun main(args: Array<String>) {
println("wiki.hsoub.com".windowed(size = 5, step = 1)) // [wiki., iki.h, ki.hs, i.hso, .hsou, hsoub, soub., oub.c, ub.co, b.com]
println("wiki.hsoub.com".windowed(size = 5, step = 3)) // [wiki., i.hso, soub., b.com]
}

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

تستدعي الشيفرة الآتية الدالة ()windowed عبر عدة سلاسل نصية وتمرر إليها عددين ودالة كوسائط، وتطبع الناتج

fun main(args: Array<String>) {
println("wiki.hsoub.com".windowed(size = 5, step = 1)  {it.first()} ) // [w, i, k, i, ., h, s, o, u, b]
println("wiki.hsoub.com".windowed(size = 5, step = 3) {it.first()} ) // [w, i, s, b]
}

انظر أيضًا

مصادر