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

من موسوعة حسوب
لا ملخص تعديل
مراجعة وتدقيق.
 
سطر 1: سطر 1:
<noinclude>{{DISPLAYTITLE: التابع text.zipWithNext()‎ في لغة Kotlin}}</noinclude>
<noinclude>{{DISPLAYTITLE: الدالة <code>zipWithNext()‎</code> في Kotlin}}</noinclude>
يختلف سلوك الدالة <code>zipWithNext()</code>‎ بحسب نوع وعدد الوسائط المُمرّرة (انظر فقرة [[Kotlin/kotlin.text/zipWithNext#.D8.A7.D9.84.D8.A8.D9.86.D9.8A.D8.A9%20.D8.A7.D9.84.D8.B9.D8.A7.D9.85.D8.A9|البنية العامة]]).
تنشئ الدالة <code>zipWithNext()</code> أزواجًا من محارف [[Kotlin/CharSequence|السلسلة]] التي استدعيت معها والمحارف التي لها الفهرس التالي من [[Kotlin/CharSequence|السلسلة]] الممررة إليها، أو تنشئ قيمًا ناتجة عن تمرير تلك الأزواج إلى دالة معينة.
==البنية العامة==
==البنية العامة==
<syntaxhighlight lang="kotlin">
<syntaxhighlight lang="kotlin">
fun CharSequence.zipWithNext(): List<Pair<Char, Char>>  
fun CharSequence.zipWithNext(): List<Pair<Char, Char>>  


</syntaxhighlight>'''بيئة التشغيل المطلوبة: Kotlin 1.2'''
</syntaxhighlight>'''الإصدار المطلوب:''' Kotlin 1.2.


تعيد الدالة <code>zipWithNext()</code>[[Kotlin/List|لائحة]] تحتوي [[Kotlin/Pair/index|أزواجًا]] (pairs) مُركّبة من حروف [[Kotlin/CharSequence/index|سلسلة الحروف]]  التي استٌدعيت عبرها ومن حروف السلسلة الأخرى المًمرّرة <code>other</code> التي عند الفهرس الموالي، [[Kotlin/List|اللائحة]] المُعادة ستكون فارغة إن  كانت [[Kotlin/CharSequence/index|سلسلة حروف]] الأصلية تحتوي أقل من حرفين.<syntaxhighlight lang="kotlin">
إن استدعيت الدالة <code>zipWithNext()</code> مع <nowiki/>[[Kotlin/CharSequence|سلسلة من المحارف]] ومع تمرير <nowiki/>[[Kotlin/CharSequence|سلسلة]] أخرى إليها كمعامل، فستشكل أزواجًا من محارف [[Kotlin/CharSequence|السلسلة]] المعطاة التي لها فهرس معين ومحارف [[Kotlin/CharSequence|السلسلة]] <code>other</code> التي لها الفهرس التالي وتضعها في قائمة؛ طول القائمة المعادة يساوي طول أٌقصرهما.<syntaxhighlight lang="kotlin">
inline fun <R> CharSequence.zipWithNext(
inline fun <R> CharSequence.zipWithNext(
     transform: (a: Char, b: Char) -> R
     transform: (a: Char, b: Char) -> R
): List<R>  
): List<R>  
</syntaxhighlight>'''بيئة التشغيل المطلوبة: Kotlin 1.2'''
</syntaxhighlight>'''الإصدار المطلوب:''' Kotlin 1.2.


تعيد الدالة <code>zipWithNext()</code>[[Kotlin/List|لائحة]] تحتوي  نتائج تطبيق الدالة المُمرّرة <code>transform</code> على حروف [[Kotlin/CharSequence/index|سلسلة الحروف]]  التي استٌدعيت عبرها وعلى حروف السلسلة الأخرى المًمرّرة <code>other</code> التي عند الفهرس الموالي، [[Kotlin/List|اللائحة]] المُعادة ستكون فارغة إن  كانت [[Kotlin/CharSequence/index|سلسلة حروف]] الأصلية تحتوي أقل من حرفين.
وإن استدعيت الدالة <code>zipWithNext()</code> مع <nowiki/>[[Kotlin/CharSequence|سلسلة من المحارف]] ومع تمرير <nowiki/>[[Kotlin/CharSequence|سلسلة]] ودالة إليها، فستعيد قائمة تحوي قيمًا ناتجة عن تمرير محارف [[Kotlin/CharSequence|السلسلة]] المعطاة التي لها فهرس معين ومحارف [[Kotlin/CharSequence|السلسلة]] <code>other</code> التي لها الفهرس التالي إلى تلك الدالة المعطاة؛ طول القائمة المعادة يساوي طول أٌقصرهما.


يُلاحَظ وجود الكلمة المفتاحية <code>inline</code> للدلالة على أن هذه الدالة مباشرة، وللمزيد من التفاصيل راجع <nowiki/>[[Kotlin/inline functions|توثيق الدوال المباشرة (inline functions)]].
وجود الكلمة المفتاحية <code>inline</code> يدل على أنَّ هذه الدالة مباشرة (للمزيد من التفاصيل، ارجع إلى صفحة <nowiki/>[[Kotlin/inline functions|الدوال المباشرة (inline functions)]]).
 
== المعاملات ==
 
=== <code>other</code> ===
سلسلة المحارف الأخرى التي ستطبق عليها العملية.
 
=== <code>transform</code> ===
الدالة التي سيمرر إليها محارف [[Kotlin/CharSequence|السلسلة]] المعطاة التي لها فهرس معين ومحارف [[Kotlin/CharSequence|السلسلة]] <code>other</code> التي لها الفهرس التالي ثم تعيد القيم المقابلة لها.


==القيم المعادة==
==القيم المعادة==
[[Kotlin/List|لائحة]].
تعاد [[Kotlin/collections/List|قائمة]] تحوي أزواجًا من محارف [[Kotlin/CharSequence|السلسلة]] التي استدعيت معها التي لها الفهرس الحالي والمحارف التي لها الفهرس التالي من [[Kotlin/CharSequence|السلسلة]] <code>other</code>، أو تنشئ قيمًا ناتجة عن تمرير تلك الأزواج إلى الدالة <code>transform</code>.
==أمثلة==
==أمثلة==
===استخدام الدالة <code>zipWithNext()‎</code> مع السلاسل النصية ===
مثالٌ على استعمال الدالة <code>zipWithNext()‎</code>:<syntaxhighlight lang="kotlin">
تعرّف الشيفرة الآتية [[Kotlin/List|لائحة]] حروف باسم <code>letters،</code>  ثم تستدعي الدالة <code>zipWithNext()‎</code> عبرها وتحيل الناتج إلى المتغير <code>pairs</code>، وتطبع الناتج:<syntaxhighlight lang="kotlin">
fun main(args: Array<String>) {
fun main(args: Array<String>) {
val letters = ('a'..'f').toList()
    val letters = ('a'..'f').toList()
val pairs = letters.zipWithNext()
    val pairs = letters.zipWithNext()


println(letters) // [a, b, c, d, e, f]
    println(letters) // [a, b, c, d, e, f]
println(pairs) // [(a, b), (b, c), (c, d), (d, e), (e, f)]
    println(pairs) // [(a, b), (b, c), (c, d), (d, e), (e, f)]
}
}
</syntaxhighlight>
</syntaxhighlight>مثالٌ آخر على استعمال الدالة <code>zipWithNext()‎</code> مع تمرير دالة:<syntaxhighlight lang="kotlin">
===استخدام الدالة <code>zipWithNext()‎</code> مع السلاسل النصية مع تمرير دالة===
تعرّف الشيفرة الآتية [[Kotlin/List|لائحة]] أعداد باسم <code>values</code>،  ثم تستدعي الدالة <code>zipWithNext()‎</code> عبرها مع تمرير دالة كوسيط وتحيل الناتج إلى المتغير <code>deltas</code>، وتطبع الناتج:<syntaxhighlight lang="kotlin">
fun main(args: Array<String>) {
fun main(args: Array<String>) {
val values = listOf(1, 4, 9, 16, 25, 36)
    val values = listOf(1, 4, 9, 16, 25, 36)
val deltas = values.zipWithNext { a, b -> b - a }
    val deltas = values.zipWithNext { a, b -> b - a }


println(deltas) // [3, 5, 7, 9, 11]
    println(deltas) // [3, 5, 7, 9, 11]
}
}
</syntaxhighlight>
</syntaxhighlight>
==انظر أيضًا==
==انظر أيضًا==
* <code>[[Kotlin/kotlin.text/zip|zip()]]</code>‎ : تعيد الدالة <code>zip()</code>‎ [[Kotlin/List|لائحة]] تحتوي [[Kotlin/Pair/index|أزواجًا]] (pairs) مُركّبة من حروف [[Kotlin/CharSequence/index|سلسلة الحروف]]  التي استٌدعيت عبرها ومن حروف السلسلة الأخرى المًمرّرة <code>other</code> التي لها نفس الفهرس، [[Kotlin/List|اللائحة]] المُعادة لها طول أقصر [[Kotlin/CharSequence/index|سلسلة حروف]].
*الدالة <code>[[Kotlin/kotlin.text/zip|zip()]]</code>‎ : تنشئ أزواجًا من محارف سلسلتين لها نفس الفهرس، أو تنشئ قيمًا عبر تمرير عناصر لها نفس الفهرس تجلب من كائنين مختلفين إلى دالة معينة.
 
* الدالة <code>[[Kotlin/kotlin.text/map|map()]]</code>: تعيد قائمةً تحوي ناتج تطبيق الدالة المُمرّرة إليها على كل محرف من محارف <nowiki/>[[Kotlin/CharSequence|السلسلة]] التي استُدعيت معها.
*<code>[[Kotlin/text/toUpperCase|toUpperCase()]]</code>‎ : تحوّل الدالة <code>toUpperCase()</code>‎ الحرف أو السلسلة النصية التي استٌدعيت عبرها إلى حالة الأحرف الكبيرة (uppercase).
*<code>[[Kotlin/kotlin.text/toBigDecimal|toBigDecimal()]]</code>: تحلّل الدالة <code>toBigDecimal()</code>[[Kotlin/String|السلسلة النصية]] التي استٌدعيت عبرها وتحوّلها إلى عدد من النوع <code>BigDecimal</code>.
 
*<code>[[Kotlin/text/isDefined|isDefined()]]‎</code>: تعيد القيمة <code>true</code> في حال كان الحرف (Unicode code point) الذي استٌدعيت عبره مُعرّفًا في اليونيكود (Unicode).
==مصادر==
==مصادر==
*[http://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/zip-with-next.html صفحة الدالة text.zipWithNext()‎ في التوثيق الرسميّ للمكتبة القياسيّة في لغة Kotlin.]
*[http://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/zip-with-next.html صفحة الدالة zipWithNext()‎ في التوثيق الرسميّ للمكتبة القياسيّة في لغة Kotlin.]
[[تصنيف:Kotlin]]
[[تصنيف:Kotlin]]
[[تصنيف:Kotlin Method]]
[[تصنيف:Kotlin Function]]
[[تصنيف:Kotlin Text]]

المراجعة الحالية بتاريخ 06:59، 7 سبتمبر 2018

تنشئ الدالة zipWithNext()‎ أزواجًا من محارف السلسلة التي استدعيت معها والمحارف التي لها الفهرس التالي من السلسلة الممررة إليها، أو تنشئ قيمًا ناتجة عن تمرير تلك الأزواج إلى دالة معينة.

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

fun CharSequence.zipWithNext(): List<Pair<Char, Char>>

الإصدار المطلوب: Kotlin 1.2. إن استدعيت الدالة zipWithNext()‎ مع سلسلة من المحارف ومع تمرير سلسلة أخرى إليها كمعامل، فستشكل أزواجًا من محارف السلسلة المعطاة التي لها فهرس معين ومحارف السلسلة other التي لها الفهرس التالي وتضعها في قائمة؛ طول القائمة المعادة يساوي طول أٌقصرهما.

inline fun <R> CharSequence.zipWithNext(
    transform: (a: Char, b: Char) -> R
): List<R>

الإصدار المطلوب: Kotlin 1.2.

وإن استدعيت الدالة zipWithNext()‎ مع سلسلة من المحارف ومع تمرير سلسلة ودالة إليها، فستعيد قائمة تحوي قيمًا ناتجة عن تمرير محارف السلسلة المعطاة التي لها فهرس معين ومحارف السلسلة other التي لها الفهرس التالي إلى تلك الدالة المعطاة؛ طول القائمة المعادة يساوي طول أٌقصرهما.

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

المعاملات

other

سلسلة المحارف الأخرى التي ستطبق عليها العملية.

transform

الدالة التي سيمرر إليها محارف السلسلة المعطاة التي لها فهرس معين ومحارف السلسلة other التي لها الفهرس التالي ثم تعيد القيم المقابلة لها.

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

تعاد قائمة تحوي أزواجًا من محارف السلسلة التي استدعيت معها التي لها الفهرس الحالي والمحارف التي لها الفهرس التالي من السلسلة other، أو تنشئ قيمًا ناتجة عن تمرير تلك الأزواج إلى الدالة transform.

أمثلة

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

fun main(args: Array<String>) {
    val letters = ('a'..'f').toList()
    val pairs = letters.zipWithNext()

    println(letters) // [a, b, c, d, e, f]
    println(pairs) // [(a, b), (b, c), (c, d), (d, e), (e, f)]
}

مثالٌ آخر على استعمال الدالة zipWithNext()‎ مع تمرير دالة:

fun main(args: Array<String>) {
    val values = listOf(1, 4, 9, 16, 25, 36)
    val deltas = values.zipWithNext { a, b -> b - a }

    println(deltas) // [3, 5, 7, 9, 11]
}

انظر أيضًا

  • الدالة zip()‎ : تنشئ أزواجًا من محارف سلسلتين لها نفس الفهرس، أو تنشئ قيمًا عبر تمرير عناصر لها نفس الفهرس تجلب من كائنين مختلفين إلى دالة معينة.
  • الدالة map()‎: تعيد قائمةً تحوي ناتج تطبيق الدالة المُمرّرة إليها على كل محرف من محارف السلسلة التي استُدعيت معها.

مصادر