الفرق بين المراجعتين ل"Kotlin/kotlin.text/sumBy"

من موسوعة حسوب
اذهب إلى التنقل اذهب إلى البحث
(أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE: الدالة <code>text.sumBy()‎</code> في لغة Kotlin}}</noinclude> تعيد الدالة <code>sumBy()‎</code> جزءًا من Ko...')
 
ط
 
(3 مراجعات متوسطة بواسطة 3 مستخدمين غير معروضة)
سطر 1: سطر 1:
<noinclude>{{DISPLAYTITLE: الدالة <code>text.sumBy()‎</code> في لغة Kotlin}}</noinclude>
+
<noinclude>{{DISPLAYTITLE: الدالة <code>CharSequence.sumBy()‎</code> في Kotlin}}</noinclude>
تعيد  الدالة <code>sumBy()‎</code> جزءًا من [[Kotlin/CharSequence/index|سلسلة الحروف]] أو [[Kotlin/String|السلسلة النصية]] التي استُدعيت عبرها والمُحدد بالوسائط المُمررة (انظر فقرة [[Kotlin/kotlin.text/substring#.D8.A7.D9.84.D8.A8.D9.86.D9.8A.D8.A9 .D8.A7.D9.84.D8.B9.D8.A7.D9.85.D8.A9|البنية العامة]]).   
+
تجمع الدالة <code>sumBy()‎</code> جميع نواتج تطبيق دالة معيَّنة على كل محرف من محارف [[Kotlin/CharSequence/index|سلسلة المحارف]] التي استُدعيت معها. 
 +
 
 +
الفرق بين الدالة <code>sumBy()‎</code> والدالة <code>[[Kotlin/kotlin.text/sumByDouble|sumByDouble()‎]]</code> هو في نوع القيمة التي تستطيع الدالة الممرَّر إلى كلٍّ منهما إعادتها، إذ تعيد الدالة المُمرَّرة إلى <code>sumBy()‎</code> عددًّا صحيحًا (integer) بينما يمكن أن تعيد الدالة الممرَّرة إلى <nowiki/>[[Kotlin/kotlin.text/sumByDouble|<code></code>]]<code>[[Kotlin/collections/sumByDouble|sumByDouble()‎]]</code> عددًا عشريًّا مضاعفًا (double).   
 
==البنية العامة==
 
==البنية العامة==
 
<syntaxhighlight lang="kotlin">
 
<syntaxhighlight lang="kotlin">
inline actual fun String.substring(startIndex: Int): String
+
inline fun CharSequence.sumBy(selector: (Char) -> Int): Int
  
</syntaxhighlight>تعيد  الدالة <code>substring()‎</code> جزءًا من [[Kotlin/String|السلسلة النصية]] التي استُدعيت عبرها والذي يبدأ عند الفهرس المُحدّد <code>startIndex</code> و يستمر إلى نهاية  [[Kotlin/String|السلسلة النصية]] الأصلية. <syntaxhighlight lang="kotlin">
+
</syntaxhighlight>يُلاحَظ وجود الكلمة المفتاحية <code>inline</code> التي تدل على أنَّ هذه الدالة مباشرة (للمزيد من التفاصيل، ارجع إلى صفحة <nowiki/>[[Kotlin/inline functions|الدوال المباشرة (inline functions)]]).
inline actual fun String.substring(
 
    startIndex: Int,
 
    endIndex: Int
 
): String
 
</syntaxhighlight>تعيد  الدالة <code>substring()‎</code> جزءًا من [[Kotlin/String|السلسلة النصية]] التي استُدعيت عبرها والذي يبدأ عند الفهرس المُحدّد <code>startIndex</code> و ينتهي عند الفهرس المُحدّد <code>endIndex</code>(غير مُتضمّن).<syntaxhighlight lang="kotlin">
 
fun String.substring(range: IntRange): String
 
fun CharSequence.substring(range: IntRange): String
 
  
</syntaxhighlight>تعيد  الدالة <code>substring()‎</code> جزءًا من [[Kotlin/CharSequence/index|سلسلة الحروف]] أو [[Kotlin/String|السلسلة النصية]] التي استُدعيت عبرها والمُحدد بمجال الفهارس  المُمرّر <code>range.</code><syntaxhighlight lang="kotlin">
+
== المعاملات ==
inline fun CharSequence.substring(
 
    startIndex: Int,
 
    endIndex: Int = length
 
): String
 
</syntaxhighlight>تعيد  الدالة <code>substring()‎</code> جزءًا من [[Kotlin/CharSequence/index|سلسلة الحروف]] التي استُدعيت عبرها والذي يبدأ عند الفهرس المُحدّد <code>startIndex</code> و ينتهي عند الفهرس المُحدّد <code>endIndex</code>(غير مُتضمّن). القيمة الافتراضية للوسيط <code>endIndex</code> هي طول [[Kotlin/CharSequence/index|سلسلة الحروف]] الأصلية.
 
  
يُلاحَظ وجود الكلمة المفتاحية <code>inline</code> للدلالة على أن هذه الدالة مباشرة، وللمزيد من التفاصيل راجع <nowiki/>[[Kotlin/inline functions|توثيق الدوال المباشرة (inline functions)]].
+
=== <code>selector</code> ===
 +
الدالة التي يراد تطبيقها على كل محرف من محارف [[Kotlin/CharSequence/index|سلسلة المحارف]] المعطاة وتجميع الناتج الذي تعيده.
  
 
==القيم المعادة==
 
==القيم المعادة==
[[Kotlin/String|سلسلة نصية]].  
+
يعاد عدد صحيح يمثل القيمة الناتجة عن جمع نواتج تطبيق الدالة <code>selector</code> على كل محرف من محارف [[Kotlin/CharSequence|السلسلة]] المعطاة.  
 
==أمثلة==
 
==أمثلة==
===استخدام الدالة <code>()sumBy</code> مع سلسلة نصية===
+
مثال على استعمال الدالة <code>()sumBy</code><nowiki/>:<syntaxhighlight lang="kotlin">
تعرِّف الشيفرة الآتية  [[Kotlin/String|سلسلة نصية]] باسم <code>str</code>، ثمَّ تستدعي الدالة  <code>()sumBy</code> عبرها، <nowiki/>ثمَّ تطبع الناتج:<syntaxhighlight lang="kotlin">
 
 
fun main(args: Array<String>) {
 
fun main(args: Array<String>) {
val str = "wiki.hsoub.com"
+
    val str = "wiki.hsoub.com"
      
+
 
println(str.substring(5..9)) // hsoub
+
     println(str.sumBy { it.toInt() }) // 1392
println(str.substring(5,10)) // hsoub
 
 
}
 
}
 
</syntaxhighlight>
 
</syntaxhighlight>
 
==انظر أيضًا==
 
==انظر أيضًا==
* <code>[[Kotlin/kotlin.text/substringAfter|substringAfter()]]</code>: تعيد  الدالة <code>substringAfter()‎</code> جزءًا من [[Kotlin/String|السلسلة النصية]] التي استُدعيت عبرها والمُتواجد بعد أول ظهور للمُحدِّد <code>delimiter،</code> إن لم تكن [[Kotlin/String|السلسلة النصية]] الأصلية تحتوي <code>delimiter</code>، فستعيد القيمة المُمرّرة <code>missingDelimiterValue</code>، والتي قيمتها الافتراضية هي [[Kotlin/String|السلسلة النصية]] الأصلية. 
+
* الدالة <code>[[Kotlin/kotlin.text/sumByDouble|sumByDouble()]]</code>: تجمع جميع نواتج تطبيق دالة معيَّنة على كل محرف من محارف [[Kotlin/CharSequence|سلسلة المحارف]] التي استُدعيت معها.
* <code>[[Kotlin/kotlin.text/substringBefore|substringBefore()]]‎</code>: تعيد  الدالة <code>substringBefore()‎</code> جزءًا من [[Kotlin/String|السلسلة النصية]] التي استُدعيت عبرها والمُتواجد قبل أول ظهور للمُحدِّد <code>delimiter،</code> إن لم تكن [[Kotlin/String|السلسلة النصية]] الأصلية تحتوي <code>delimiter</code>، فستعيد القيمة المُمرّرة <code>missingDelimiterValue</code>، والتي قيمتها الافتراضية هي [[Kotlin/String|السلسلة النصية]] الأصلية. 
+
* الدالة <code>[[Kotlin/kotlin.text/fold|fold()]]‎</code>: تجمِّع تراكميًّا ناتج تطبيق عملية معينة على كل محرف من محارف السلسلة المستدعاة معها (من اليسار إلى اليمين) والقيمة التراكمية الحالية مع قيمة أولية إن أعطيت.
 
+
* الدالة <code>[[Kotlin/kotlin.text/groupBy|groupBy()]]</code>: تجمِّع محارف <nowiki/>[[Kotlin/CharSequence|السلسلة]] التي استُدعيت معها في مجموعات، إذ تطبق دالة محدَّدة على كل عنصر ثمَّ تعاد خريطة تحوي مجموعاتٍ مفتاحُ كلِّ واحدةٍ منها مرتبطٌ بقائمة من المحارف المقابلة.
* <code>[[Kotlin/kotlin.text/removeSuffix|removeSuffix()]]</code>: إن كانت [[Kotlin/String|السلسلة النصية]] أو [[Kotlin/CharSequence/index|سلسلة الحروف]] التي استٌدعيت عبرها الدالة <code>removeSuffix()‎</code> تنتهي باللاحقة <code>suffix</code> فستعيد [[Kotlin/String|سلسلة نصية]] أو [[Kotlin/CharSequence/index|سلسلة حروف]] جديدة مع حذف تلك اللاحقة، وإلا فستعيد [[Kotlin/String|السلسلة النصية]] أو [[Kotlin/CharSequence/index|سلسلة الحروف]] كما هي. 
 
* <code>[[Kotlin/kotlin.text/slice|slice()]]‎</code>: تعيد  الدالة <code>slice()‎</code> [[Kotlin/CharSequence/index|سلسلة حروف]] أو [[Kotlin/String|سلسلة نصية]] جديدة تحتوي الحروف التي تنتمي فهارسها إلى الوسيط المُمرر. 
 
  
 
==مصادر==
 
==مصادر==
*[http://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/substring.html الدالة text.sumBy()‎ في التوثيق الرسميّ للمكتبة القياسيّة في لغة Kotlin.]
+
*[http://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/sum-by.html صفحة الدالة CharSequence.sumBy()‎ في التوثيق الرسميّ للمكتبة القياسيّة في لغة Kotlin.]
 
[[تصنيف:Kotlin]]
 
[[تصنيف:Kotlin]]
[[تصنيف:Kotlin Functions]]
+
[[تصنيف:Kotlin Function]]
 +
[[تصنيف:Kotlin Text]]

المراجعة الحالية بتاريخ 11:28، 8 سبتمبر 2018

تجمع الدالة sumBy()‎ جميع نواتج تطبيق دالة معيَّنة على كل محرف من محارف سلسلة المحارف التي استُدعيت معها.

الفرق بين الدالة sumBy()‎ والدالة sumByDouble()‎ هو في نوع القيمة التي تستطيع الدالة الممرَّر إلى كلٍّ منهما إعادتها، إذ تعيد الدالة المُمرَّرة إلى sumBy()‎ عددًّا صحيحًا (integer) بينما يمكن أن تعيد الدالة الممرَّرة إلى sumByDouble()‎ عددًا عشريًّا مضاعفًا (double). 

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

inline fun CharSequence.sumBy(selector: (Char) -> Int): Int

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

المعاملات

selector

الدالة التي يراد تطبيقها على كل محرف من محارف سلسلة المحارف المعطاة وتجميع الناتج الذي تعيده.

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

يعاد عدد صحيح يمثل القيمة الناتجة عن جمع نواتج تطبيق الدالة selector على كل محرف من محارف السلسلة المعطاة.

أمثلة

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

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

    println(str.sumBy { it.toInt() }) // 1392
}

انظر أيضًا

  • الدالة sumByDouble()‎: تجمع جميع نواتج تطبيق دالة معيَّنة على كل محرف من محارف سلسلة المحارف التي استُدعيت معها.
  • الدالة fold(): تجمِّع تراكميًّا ناتج تطبيق عملية معينة على كل محرف من محارف السلسلة المستدعاة معها (من اليسار إلى اليمين) والقيمة التراكمية الحالية مع قيمة أولية إن أعطيت.
  • الدالة groupBy()‎: تجمِّع محارف السلسلة التي استُدعيت معها في مجموعات، إذ تطبق دالة محدَّدة على كل عنصر ثمَّ تعاد خريطة تحوي مجموعاتٍ مفتاحُ كلِّ واحدةٍ منها مرتبطٌ بقائمة من المحارف المقابلة.

مصادر