الفرق بين المراجعتين لصفحة: «Kotlin/ranges/until»

من موسوعة حسوب
< Kotlin‏ | ranges
أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE: الثابتة <code>‎ranges.until()‎</code> في لغة Kotlin}}</noinclude> تعيد الدالة ‎<code>until()‎</code> مجالا...'
 
طلا ملخص تعديل
 
(4 مراجعات متوسطة بواسطة 3 مستخدمين غير معروضة)
سطر 1: سطر 1:
<noinclude>{{DISPLAYTITLE: الثابتة <code>‎ranges.until()‎</code> في لغة Kotlin}}</noinclude>
<noinclude>{{DISPLAYTITLE:الدالة <code>‎until()‎</code> في Kotlin}}</noinclude>
تعيد الدالة ‎<code>until()‎</code> مجالا متدرّجًا (progression) تنازليًا من القيمة التي استُدعيت عبرها وحتى القيمة الممرّرة. ينبغي أن تكون القيمة الممررة أصغر من القيمة التي استُدعيت عبرها الدالة، وإلّا ستعيد الدالة مجالا متدرجا فارغًا.
تنشئ الدالة ‎<code>until()‎</code> مجالًا (range) تصاعديًا يبدأ القيمة التي استُدعيت معها وحتى القيمة الممرّرة إليها (لا تدخل هذه القيمة ضمن المجال).  
==البنية العامة==
==البنية العامة==
<syntaxhighlight lang="kotlin">
<syntaxhighlight lang="kotlin">
infix fun Int.downTo(to: Byte): IntProgression
infix fun Int.until(to: Byte): IntRange
infix fun Long.downTo(to: Byte): LongProgression
infix fun Long.until(to: Byte): LongRange
infix fun Byte.downTo(to: Byte): IntProgression
infix fun Byte.until(to: Byte): IntRange
infix fun Short.downTo(to: Byte): IntProgression
infix fun Short.until(to: Byte): IntRange
infix fun Char.downTo(to: Char): CharProgression
infix fun Long.until(to: Int): LongRange
infix fun Int.downTo(to: Int): IntProgression
infix fun Int.until(to: Short): IntRange
infix fun Long.downTo(to: Int): LongProgression
infix fun Long.until(to: Short): LongRange
infix fun Byte.downTo(to: Int): IntProgression
infix fun Byte.until(to: Short): IntRange
infix fun Short.downTo(to: Int): IntProgression
infix fun Short.until(to: Short): IntRange
infix fun Int.downTo(to: Long): LongProgression
</syntaxhighlight>تنشئ الدالة ‎<code>until()‎</code> مجالًا تصاعديًا يبدأ من القيمة التي استُدعيت معها وينتهي عند القيمة <code>to</code> الممرّرة إليها (لا تدخل ضمن المجال). ينبغي أن تكون القيمة <code>to</code> المُمرَّرة أكبر من القيمة التي استُدعيت معها الدالة، وإلّا فستعيد الدالة مجالًا فارغًا.<syntaxhighlight lang="kotlin">
infix fun Long.downTo(to: Long): LongProgression
infix fun Char.until(to: Char): CharRange
infix fun Byte.downTo(to: Long): LongProgression
infix fun Short.downTo(to: Long): LongProgression
infix fun Int.downTo(to: Short): IntProgression
infix fun Long.downTo(to: Short): LongProgression
infix fun Byte.downTo(to: Short): IntProgression
infix fun Short.downTo(to: Short): IntProgression


</syntaxhighlight>
</syntaxhighlight>تنشئ الدالة ‎<code>until()‎</code> مجالًا تصاعديًا من المحارف يبدأ من المحرف <code>Char</code> الذي استُدعي معها وينتهي عند المحرف <code>to</code> الممرّرة إليها (لا تدخل ضمن المجال). يجب أن يكون المحرف <code>to</code> المُمرّر أكبر من المحرف <code>'‎\u0000'</code> أو ستعيد الدالة مجالًا فارغًا.<syntaxhighlight lang="kotlin">
infix fun Int.until(to: Int): IntRange
infix fun Byte.until(to: Int): IntRange
infix fun Short.until(to: Int): IntRange
</syntaxhighlight>تنشئ الدالة ‎<code>until()‎</code> مجالًا تصاعديًا يبدأ من القيمة التي استُدعيت معها وينتهي عند القيمة <code>to</code> الممرّرة إليها (لا تدخل ضمن المجال). ينبغي أن تكون القيمة <code>to</code> الممرَّرة أكبر من القيمة <code>[[Kotlin/Int/MIN VALUE|Int.MIN_VALUE]]</code>، وإلّا فستعيد الدالة مجالًا فارغًا.<syntaxhighlight lang="kotlin">
infix fun Int.until(to: Long): LongRange
infix fun Long.until(to: Long): LongRange
infix fun Byte.until(to: Long): LongRange
infix fun Short.until(to: Long): LongRange
</syntaxhighlight>تنشئ الدالة ‎<code>until()‎</code> مجالًا تصاعديًا يبدأ من القيمة التي استُدعيت معها وينتهي عند القيمة <code>to</code> الممرّرة إليها (لا تدخل ضمن المجال). ينبغي أن تكون القيمة الممرَّرة أكبر من القيمة <code>[[Kotlin/Long/MIN VALUE|Long.MIN_VALUE]]</code>، وإلّا فستعيد الدالة مجالا فارغًا.


== القيمة المُعادة ==
وجود الكلمة المفتاحية <code>infix</code> يدل على أنَّ هذه الدالة يمكن استدعاؤها بنمط [[Kotlin/functions#.D8.A7.D9.84.D8.AA.D8.AF.D9.88.D9.8A.D9.86 .D8.A7.D9.84.D8.AF.D8.A7.D8.AE.D9.84.D9.8A.D9.91 .28Infix notation.29|التدوين الداخليّ]] (infix notation)؛ أي من خلال حذف المعامل <code>.</code>والأقواس <code>()</code> المُستخدَمَين في الاستدعاء عادةً.
مجال متدرّج (progression) تنازلي.
==المعاملات==


== مثال ==
=== <code>to</code> ===
القيمة القصوى التي سيُنشَأ منها المجال.


=== استخدام الدالة <code>until()‎</code> ===
==القيمة المعادة==
في الشيفرة التالية نعرّف عددين <code>x</code> و <code>y</code>، ثم نعرّف مجال متدرّج <code>p</code> عبر استدعاء الدالة<code>until()‎</code> عبر <code>x</code> ونمرر إليها الوسيط <code>y</code> ، ثم نستخدم <code>p</code> في حلقة <code>[[Kotlin/control flow#.D8.AA.D8.B9.D8.A8.D9.8A.D8.B1 for|for]]</code>:<syntaxhighlight lang="kotlin">
يعاد مجالٌ تصاعديٌّ يبدأ من القيمة المعطاة وينتهي عند القيمة <code>to</code> المُمرَّرة ولا تدخل هذه القيمة ضمن المجال.
==مثال==
استعمال الدالة <code>until()‎</code> لإنشاء مجال من الأعداد الصحيحة ومجال من الأحرف:<syntaxhighlight lang="kotlin">
fun main(args: Array<String>) {     
fun main(args: Array<String>) {     
     val x = 9
     val x = 5
     val y = 4
     val y = 'a'
     val p = x.downTo(y)  
 
      
     print(x.until(9)) // 5..8
    for (a in p) print(a) // 987654
     print(y.until('f')) // a..e
}
}
</syntaxhighlight>
</syntaxhighlight>
 
==انظر أيضًا==
==<nowiki/>أنظر أيضًا ==
* الدالة <code>[[Kotlin/Char/rangeTo|rangeTo()‎]]</code>: تنشئ مجالًا يقع بين المحرف الذي استدعي معها والمحرف المُمرّر إليها.
*الثابتة<code>[[Kotlin/text/category|category]]</code>‎ : تساوي القيمة القصوى لبديل وحدة اليونيكود  (Unicode surrogate code unit).
*الدالة<nowiki/>[[Kotlin/ranges/downTo|<code>downTo()</code>]]‎ : تنشئ مجالًا متدرجًا (progression) يبدًأ من القيمة القصوى التي استُدعيت معها وينحدر تنازليًّا حتى يصل إلى القيمة الممرّرة إليها.
* الدالة <code>[[Kotlin/Char/compareTo|compareTo()]]</code>‎: توازن بين قيمة العنصر الذي استُدعيت معه والقيمة المُمرّرة إليه ثمَّ تعيد القيمة 0 إن كانا متساويين، أو قيمة سالبة إن كانت القيمة الأولى (قيمة العنصر الذي استُدعيت معه) أصغر من القيمة الثانية، أو قيمة موجبة إن كانت القيمة الأولى أكبر من القيمة الثانية.
==مصادر==
==مصادر==
* [https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.ranges/down-to.html الدالة  until في التوثيق الرسميّ للمكتبة القياسيّة في لغة Kotlin.]
*[https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.ranges/until.html صفحة الدالة ()until في التوثيق الرسميّ للمكتبة القياسيّة في لغة Kotlin.]
[[تصنيف:Kotlin]]
[[تصنيف:Kotlin]]
[[تصنيف:Kotlin functions]]
[[تصنيف:Koltin Function]]
[[تصنيف:Kotlin Range]]

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

تنشئ الدالة ‎until()‎ مجالًا (range) تصاعديًا يبدأ القيمة التي استُدعيت معها وحتى القيمة الممرّرة إليها (لا تدخل هذه القيمة ضمن المجال).

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

infix fun Int.until(to: Byte): IntRange 
infix fun Long.until(to: Byte): LongRange 
infix fun Byte.until(to: Byte): IntRange 
infix fun Short.until(to: Byte): IntRange 
infix fun Long.until(to: Int): LongRange 
infix fun Int.until(to: Short): IntRange 
infix fun Long.until(to: Short): LongRange 
infix fun Byte.until(to: Short): IntRange 
infix fun Short.until(to: Short): IntRange

تنشئ الدالة ‎until()‎ مجالًا تصاعديًا يبدأ من القيمة التي استُدعيت معها وينتهي عند القيمة to الممرّرة إليها (لا تدخل ضمن المجال). ينبغي أن تكون القيمة to المُمرَّرة أكبر من القيمة التي استُدعيت معها الدالة، وإلّا فستعيد الدالة مجالًا فارغًا.

infix fun Char.until(to: Char): CharRange

تنشئ الدالة ‎until()‎ مجالًا تصاعديًا من المحارف يبدأ من المحرف Char الذي استُدعي معها وينتهي عند المحرف to الممرّرة إليها (لا تدخل ضمن المجال). يجب أن يكون المحرف to المُمرّر أكبر من المحرف '‎\u0000' أو ستعيد الدالة مجالًا فارغًا.

infix fun Int.until(to: Int): IntRange 
infix fun Byte.until(to: Int): IntRange 
infix fun Short.until(to: Int): IntRange

تنشئ الدالة ‎until()‎ مجالًا تصاعديًا يبدأ من القيمة التي استُدعيت معها وينتهي عند القيمة to الممرّرة إليها (لا تدخل ضمن المجال). ينبغي أن تكون القيمة to الممرَّرة أكبر من القيمة Int.MIN_VALUE، وإلّا فستعيد الدالة مجالًا فارغًا.

infix fun Int.until(to: Long): LongRange 
infix fun Long.until(to: Long): LongRange 
infix fun Byte.until(to: Long): LongRange
infix fun Short.until(to: Long): LongRange

تنشئ الدالة ‎until()‎ مجالًا تصاعديًا يبدأ من القيمة التي استُدعيت معها وينتهي عند القيمة to الممرّرة إليها (لا تدخل ضمن المجال). ينبغي أن تكون القيمة الممرَّرة أكبر من القيمة Long.MIN_VALUE، وإلّا فستعيد الدالة مجالا فارغًا.

وجود الكلمة المفتاحية infix يدل على أنَّ هذه الدالة يمكن استدعاؤها بنمط التدوين الداخليّ (infix notation)؛ أي من خلال حذف المعامل .والأقواس () المُستخدَمَين في الاستدعاء عادةً.

المعاملات

to

القيمة القصوى التي سيُنشَأ منها المجال.

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

يعاد مجالٌ تصاعديٌّ يبدأ من القيمة المعطاة وينتهي عند القيمة to المُمرَّرة ولا تدخل هذه القيمة ضمن المجال.

مثال

استعمال الدالة until()‎ لإنشاء مجال من الأعداد الصحيحة ومجال من الأحرف:

fun main(args: Array<String>) {    
    val x = 5
    val y = 'a'

    print(x.until(9)) // 5..8
    print(y.until('f')) // a..e
}

انظر أيضًا

  • الدالة rangeTo()‎: تنشئ مجالًا يقع بين المحرف الذي استدعي معها والمحرف المُمرّر إليها.
  • الدالةdownTo()‎ : تنشئ مجالًا متدرجًا (progression) يبدًأ من القيمة القصوى التي استُدعيت معها وينحدر تنازليًّا حتى يصل إلى القيمة الممرّرة إليها.
  • الدالة compareTo()‎: توازن بين قيمة العنصر الذي استُدعيت معه والقيمة المُمرّرة إليه ثمَّ تعيد القيمة 0 إن كانا متساويين، أو قيمة سالبة إن كانت القيمة الأولى (قيمة العنصر الذي استُدعيت معه) أصغر من القيمة الثانية، أو قيمة موجبة إن كانت القيمة الأولى أكبر من القيمة الثانية.

مصادر