الفرق بين المراجعتين لصفحة: «Kotlin/kotlin.text/fold»
لا ملخص تعديل |
جميل-بيلوني (نقاش | مساهمات) طلا ملخص تعديل |
||
(3 مراجعات متوسطة بواسطة 3 مستخدمين غير معروضة) | |||
سطر 1: | سطر 1: | ||
<noinclude>{{DISPLAYTITLE: الدالة <code> | <noinclude>{{DISPLAYTITLE: الدالة <code>CharSequence.fold()</code> في Kotlin}}</noinclude> | ||
تجمِّع الدالة <code>fold()</code> تراكميًّا ناتج تطبيق عملية معينة على كل محرف من محارف [[Kotlin/Charsequence|السلسلة]] المستدعاة معها (من اليسار إلى اليمين) والقيمة التراكمية الحالية مع قيمة أولية إن أعطيت. | |||
==البنية العامة== | ==البنية العامة== | ||
<syntaxhighlight lang="kotlin"> | <syntaxhighlight lang="kotlin"> | ||
سطر 7: | سطر 7: | ||
operation: (acc: R, Char) -> R | operation: (acc: R, Char) -> R | ||
): R | ): R | ||
</syntaxhighlight> | </syntaxhighlight>وجود الكلمة المفتاحية <code>inline</code> يدل على أنَّ هذه الدالة مباشرة (للمزيد من التفاصيل، راجع صفحة <nowiki/>[[Kotlin/inline functions|الدوال المباشرة (inline functions)]]). | ||
== المعاملات == | |||
=== <code>initial</code> === | |||
قيمة أولية يراد إضافتها مع ناتج تطبيق الدالة <code>operation</code> على أول محرف من محارف [[Kotlin/Charsequence|السلسلة]] لبدء عملية التجميع. | |||
=== <code>operation</code> === | |||
دالةٌ تمثل العملية المراد تطبيقها على كل محرف من محارف [[Kotlin/Charsequence|السلسلة]]، إذ يمرَّر إليها القيمة المجمعة الحالية <code>acc</code> وكل محرف من محارف [[Kotlin/Charsequence|السلسلة]] <code>char</code>، وتعيد القيمة المجمَّعة التالية <code>acc</code>. | |||
==القيم المعادة== | ==القيم المعادة== | ||
القيمة النهائية | تعاد القيمة المجمَّعة النهائية الناتجة عن تطبيق العملية <code>operation</code> بشكل تراكمي على كل محرف من محارف [[Kotlin/CharSequence/index|سلسلة المحارف]] المعطاة مع إضافة قيمة المعامل <code>initial</code> إلى ناتج تطبيق العملية أول مرة. | ||
==أمثلة== | ==أمثلة== | ||
مثالٌ على استعمال الدالة <code>()fold</code><nowiki/>:<syntaxhighlight lang="kotlin"> | |||
fun main(args: Array<String>) { | fun main(args: Array<String>) { | ||
val str = "hsoub wiki" | val str = "hsoub wiki" | ||
val max = str.fold('A') { max, element -> if (max > element) max else element } | val max = str.fold('A') { max, element -> if (max > element) max else element } | ||
print(max) // w | print(max) // w | ||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
==انظر أيضًا== | ==انظر أيضًا== | ||
* <code>[[Kotlin/kotlin.text/ | * الدالة <code>[[Kotlin/kotlin.text/foldRight|foldRight()]]</code>: تجمِّع تراكميًّا ناتج تطبيق عملية معينة على كل محرف من محارف [[Kotlin/Charsequence|السلسلة]] المستدعاة معها (بدءًا من اليمين إلى اليسار) والقيمة التراكمية الحالية مع قيمة أولية إن أعطيت. | ||
* الدالة <code>[[Kotlin/kotlin.text/foldIndexed|foldIndexed()]]</code>: تجمِّع تراكميًّا ناتج تطبيق عملية معينة على فهرس كل محرف من محارف السلسلة المستدعاة معها (من اليسار إلى اليمين) وقيمته والقيمة التراكمية الحالية مع قيمة أولية إن أعطيت. | |||
* <code>[[Kotlin/kotlin.text/ | * الدالة <code>[[Kotlin/kotlin.text/reduce|reduce()]]</code>: قيمة محرف بدءًا من المحرف الأول عبر تطبيق عملية معينة من يسار سلسلة المحارف المعطاة إلى يمينها على القيمة المتراكمة الحالية وعلى الحرف التالي ثم تُعيد قيمة المحرف النهائي الناتج. | ||
* <code>[[Kotlin/kotlin.text/ | * الدالة <code>[[Kotlin/kotlin.text/filter|filter()]]</code>: ترشِّح محارف <nowiki/>[[Kotlin/CharSequence/index|سلسلة المحارف]] أو السلسلة النصية المعطاة بناءً على قيمة المحرف التي تحقِّق شرطًا معيَّنًا. | ||
==مصادر== | ==مصادر== | ||
*[http://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/fold.html الدالة | *[http://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/fold.html صفحة الدالة CharSequence.fold() في التوثيق الرسميّ للمكتبة القياسيّة في لغة Kotlin.] | ||
[[تصنيف:Kotlin]] | [[تصنيف:Kotlin]] | ||
[[تصنيف:Kotlin | [[تصنيف:Kotlin Function]] | ||
[[تصنيف:Kotlin Text]] | |||
[[تصنيف:Kotlin CharSequence]] |
المراجعة الحالية بتاريخ 04:40، 5 سبتمبر 2018
تجمِّع الدالة fold()
تراكميًّا ناتج تطبيق عملية معينة على كل محرف من محارف السلسلة المستدعاة معها (من اليسار إلى اليمين) والقيمة التراكمية الحالية مع قيمة أولية إن أعطيت.
البنية العامة
inline fun <R> CharSequence.fold(
initial: R,
operation: (acc: R, Char) -> R
): R
وجود الكلمة المفتاحية inline
يدل على أنَّ هذه الدالة مباشرة (للمزيد من التفاصيل، راجع صفحة الدوال المباشرة (inline functions)).
المعاملات
initial
قيمة أولية يراد إضافتها مع ناتج تطبيق الدالة operation
على أول محرف من محارف السلسلة لبدء عملية التجميع.
operation
دالةٌ تمثل العملية المراد تطبيقها على كل محرف من محارف السلسلة، إذ يمرَّر إليها القيمة المجمعة الحالية acc
وكل محرف من محارف السلسلة char
، وتعيد القيمة المجمَّعة التالية acc
.
القيم المعادة
تعاد القيمة المجمَّعة النهائية الناتجة عن تطبيق العملية operation
بشكل تراكمي على كل محرف من محارف سلسلة المحارف المعطاة مع إضافة قيمة المعامل initial
إلى ناتج تطبيق العملية أول مرة.
أمثلة
مثالٌ على استعمال الدالة ()fold
:
fun main(args: Array<String>) {
val str = "hsoub wiki"
val max = str.fold('A') { max, element -> if (max > element) max else element }
print(max) // w
}
انظر أيضًا
- الدالة
foldRight()
: تجمِّع تراكميًّا ناتج تطبيق عملية معينة على كل محرف من محارف السلسلة المستدعاة معها (بدءًا من اليمين إلى اليسار) والقيمة التراكمية الحالية مع قيمة أولية إن أعطيت. - الدالة
foldIndexed()
: تجمِّع تراكميًّا ناتج تطبيق عملية معينة على فهرس كل محرف من محارف السلسلة المستدعاة معها (من اليسار إلى اليمين) وقيمته والقيمة التراكمية الحالية مع قيمة أولية إن أعطيت. - الدالة
reduce()
: قيمة محرف بدءًا من المحرف الأول عبر تطبيق عملية معينة من يسار سلسلة المحارف المعطاة إلى يمينها على القيمة المتراكمة الحالية وعلى الحرف التالي ثم تُعيد قيمة المحرف النهائي الناتج.
- الدالة
filter()
: ترشِّح محارف سلسلة المحارف أو السلسلة النصية المعطاة بناءً على قيمة المحرف التي تحقِّق شرطًا معيَّنًا.