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

من موسوعة حسوب
ط استبدال النص - 'Kotlin Functions' ب'Kotlin Function'
طلا ملخص تعديل
 
(1 مراجعات متوسطة بواسطة نفس المستخدم غير معروضة)
سطر 1: سطر 1:
<noinclude>{{DISPLAYTITLE: الدالة <code>text.foldIndexed()‎</code> في لغة Kotlin}}</noinclude>
<noinclude>{{DISPLAYTITLE: الدالة <code>CharSequence.foldIndexed()‎</code> في Kotlin}}</noinclude>
تُراكِم الدالة<code>foldIndexed()‎</code> القيم بدءًا من القيمة المُمرّرة <code>initial</code> وتطبّق العملية <code>operation</code> من اليسار إلى اليمين على القيمة الراهنة وعلى الحرف الموالي في  [[Kotlin/CharSequence/index|سلسلة الحروف]] التي استُدعيت عبرها  وكذلك فهرسه. ثم تُعيد القيمة النهائية.   
تجمِّع الدالة <code>foldIndexed()‎</code> تراكميًّا ناتج تطبيق عملية معينة على فهرس كل محرف من محارف السلسلة المستدعاة معها (من اليسار إلى اليمين) وقيمته والقيمة التراكمية الحالية مع قيمة أولية إن أعطيت.   
==البنية العامة==
==البنية العامة==
<syntaxhighlight lang="kotlin">
<syntaxhighlight lang="kotlin">
inline fun <R> CharSequence.fold(
inline fun <R> CharSequence.foldIndexed(
     initial: R,  
     initial: R,  
     operation: (acc: R, Char) -> R
     operation: (index: Int, acc: R, Char) -> R
): R
): R (source)
</syntaxhighlight>يُلاحَظ وجود الكلمة المفتاحية <code>inline</code> للدلالة على أن هذه الدالة مباشرة، وللمزيد من التفاصيل راجع <nowiki/>[[Kotlin/inline functions|توثيق الدوال المباشرة (inline functions)]].
</syntaxhighlight>وجود الكلمة المفتاحية <code>inline</code> يدل على أنَّ هذه الدالة مباشرة (للمزيد من التفاصيل، راجع صفحة <nowiki/>[[Kotlin/inline functions|الدوال المباشرة (inline functions)]]).
 
== المعاملات ==
 
=== <code>initial</code> ===
قيمة أولية يراد إضافتها مع ناتج تطبيق الدالة <code>operation</code> على أول محرف من محارف السلسلة لبدء عملية التجميع.
 
=== <code>operation</code> ===
دالةٌ تمثل العملية المراد تطبيقها على كل محرف من محارف السلسلة، إذ يمرَّر إليها فهرس المحرف <code>index</code> والقيمة المجمعة الحالية <code>acc</code> وكل محرف من محارف السلسلة <code>char</code>، وتعيد القيمة المجمَّعة التالية <code>acc</code>.


==القيم المعادة==
==القيم المعادة==
القيمة النهائية لتطبيق العملية <code>operation</code>بشكل تراكمي على عناصر [[Kotlin/CharSequence/index|سلسلة الحروف]].
يعاد الناتج النهائي التراكمي لتطبيق العملية <code>operation</code> المعطاة على كل محرف من محارف السلسلة (بدءًا من اليسار إلى اليمين) مع فهرس ذلك المحرف والقيمة المجمعة الحالية آنذاك مضافًا إليه القيمة الأولية<code>initial</code> إن أعطيت.
 
==أمثلة==
==أمثلة==
===استخدام الدالة <code>()foldIndexed</code> مع سلسلة نصية===
مثالٌ على استعمال الدالة <code>()foldIndexed</code><nowiki/>:<syntaxhighlight lang="kotlin">
تعرِّف الشيفرة الآتية  [[Kotlin/String|سلسلة نصية]] باسم <code>str</code>، ثمَّ تستدعي الدالة  <code>()foldIndexed</code> عبرها مع تمرير القيمة الابتدائية <code>"H"</code> ودالة كوسيطين، <nowiki/>ثمَّ تطبع الناتج:<syntaxhighlight lang="kotlin">
fun main(args: Array<String>) {
    fun main(args: Array<String>) {
     val str = "soub wiki"
     val str = "soub wiki"


     val acc= str.foldIndexed ("H"){ index, acc, element -> if (index < 5) acc + element else acc} // Hsoub
     val acc = str.foldIndexed ("H"){ index, acc, element ->
    print(acc) // w
        if (index < 5) acc + element else acc
     }
     }
    print(acc) // Hsoub
}
</syntaxhighlight>
</syntaxhighlight>
==انظر أيضًا==
==انظر أيضًا==
* <code>[[Kotlin/kotlin.text/fold|fold()]]</code>: تُراكِم الدالة<code>fold()‎</code> القيم بدءًا من القيمة المُمرّرة <code>initial</code> وتطبّق العملية <code>operation</code> من اليسار إلى اليمين على القيمة الراهنة وعلى الحرف الموالي في  [[Kotlin/CharSequence/index|سلسلة الحروف]] التي استُدعيت عبرها. ثم تُعيد القيمة النهائية. 
* الدالة <code>[[Kotlin/kotlin.text/foldRightIndexed|foldRightIndexed()]]</code>: تجمِّع تراكميًّا ناتج تطبيق عملية معينة على فهرس كل محرف من محارف السلسلة المستدعاة معها (بدءًا من اليمين إلى اليسار) وقيمته والقيمة التراكمية الحالية مع قيمة أولية إن أعطيت.  
 
* الدالة <code>[[Kotlin/kotlin.text/fold|fold()]]‎</code>: تجمِّع تراكميًّا ناتج تطبيق عملية معينة على كل محرف من محارف [[Kotlin/Charsequence|السلسلة]] المستدعاة معها (من اليسار إلى اليمين) والقيمة التراكمية الحالية مع قيمة أولية إن أعطيت.
* <code>[[Kotlin/kotlin.text/filterIndexedTo|filterIndexedTo()]]‎</code>: تضيف الدالة <code>filterIndexedTo()</code>‎ كل الحروف من سلسلة الحروف التي استُدعيت عبرها والتي تحقق الشرط المنطقي <code>predicate</code> إلى الوسيط المُمرّر <code>destination</code>. يمرَّر فهرس كل عنصر وقيمته إلى الدالة <code>predicate()‎</code> ثم تعيد بدورها قيمة منطقيَّة. 
* الدالة <code>[[Kotlin/kotlin.text/reduceIndexed|reduceIndexed()]]‎</code>: تُراكِم قيمة محرف بدءًا من المحرف الأول من السلسلة المعطاة عبر تطبيق عملية معينة من يسار هذه السلسلة إلى يمينها على القيمة المتراكمة الحالية وفهرس المحرف الحالي وقيمته ثم تُعيد قيمة المحرف النهائي الناتج.


* <code>[[Kotlin/kotlin.text/elementAt|elementAt()]]‎</code>: تعيد الحرف الموجود في الفهرس المُحدّد في سلسلة الحروف التي استُدعيت عبرها، في حال كان الفهرس خارج الحدود فستطلق الاستثناء <code>IndexOutOfBoundsException</code>
* الدالة <code>[[Kotlin/kotlin.text/filterIndexed|filterIndexed()]]‎</code>: ترشِّح محارف <nowiki/>[[Kotlin/CharSequence/index|سلسلة المحارف]] أو السلسلة النصية المعطاة بناءً على فهرس المحرف وقيمته


==مصادر==
==مصادر==
*[http://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/fold-indexed.html الدالة text.foldIndexed()‎ في التوثيق الرسميّ للمكتبة القياسيّة في لغة Kotlin.]
*[http://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/fold-indexed.html صفحة الدالة CharSequence.foldIndexed()‎ في التوثيق الرسميّ للمكتبة القياسيّة في لغة Kotlin.]
[[تصنيف:Kotlin]]
[[تصنيف:Kotlin]]
[[تصنيف:Kotlin Function]]
[[تصنيف:Kotlin Function]]
[[تصنيف:Kotlin Text]]
[[تصنيف:Kotlin CharSequence]]

المراجعة الحالية بتاريخ 04:40، 5 سبتمبر 2018

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

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

inline fun <R> CharSequence.foldIndexed(
    initial: R, 
    operation: (index: Int, acc: R, Char) -> R
): R (source)

وجود الكلمة المفتاحية inline يدل على أنَّ هذه الدالة مباشرة (للمزيد من التفاصيل، راجع صفحة الدوال المباشرة (inline functions)).

المعاملات

initial

قيمة أولية يراد إضافتها مع ناتج تطبيق الدالة operation على أول محرف من محارف السلسلة لبدء عملية التجميع.

operation

دالةٌ تمثل العملية المراد تطبيقها على كل محرف من محارف السلسلة، إذ يمرَّر إليها فهرس المحرف index والقيمة المجمعة الحالية acc وكل محرف من محارف السلسلة char، وتعيد القيمة المجمَّعة التالية acc.

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

يعاد الناتج النهائي التراكمي لتطبيق العملية operation المعطاة على كل محرف من محارف السلسلة (بدءًا من اليسار إلى اليمين) مع فهرس ذلك المحرف والقيمة المجمعة الحالية آنذاك مضافًا إليه القيمة الأوليةinitial إن أعطيت.

أمثلة

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

fun main(args: Array<String>) {
    val str = "soub wiki"

    val acc = str.foldIndexed ("H"){ index, acc, element ->
        if (index < 5) acc + element else acc
    }
    print(acc) // Hsoub
}

انظر أيضًا

  • الدالة foldRightIndexed()‎: تجمِّع تراكميًّا ناتج تطبيق عملية معينة على فهرس كل محرف من محارف السلسلة المستدعاة معها (بدءًا من اليمين إلى اليسار) وقيمته والقيمة التراكمية الحالية مع قيمة أولية إن أعطيت.  
  • الدالة fold(): تجمِّع تراكميًّا ناتج تطبيق عملية معينة على كل محرف من محارف السلسلة المستدعاة معها (من اليسار إلى اليمين) والقيمة التراكمية الحالية مع قيمة أولية إن أعطيت.
  • الدالة reduceIndexed(): تُراكِم قيمة محرف بدءًا من المحرف الأول من السلسلة المعطاة عبر تطبيق عملية معينة من يسار هذه السلسلة إلى يمينها على القيمة المتراكمة الحالية وفهرس المحرف الحالي وقيمته ثم تُعيد قيمة المحرف النهائي الناتج.

مصادر