الفرق بين المراجعتين ل"Kotlin/ranges/until"

من موسوعة حسوب
< Kotlin‏ | ranges
اذهب إلى التنقل اذهب إلى البحث
سطر 1: سطر 1:
 
<noinclude>{{DISPLAYTITLE: الثابتة <code>‎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> مجالا (range) تصاعديًا من القيمة التي استُدعيت عبرها وحتى القيمة الممرّرة (القيمة المُمرّرة مُستثناة). ينبغي أن تكون القيمة الممررة أكبر من القيمة التي استُدعيت عبرها الدالة، وإلّا فستعيد الدالة مجالا فارغًا. <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> مجالا (range) تصاعديًا من القيمة التي استُدعيت عبرها وحتى القيمة الممرّرة (القيمة المُمرّرة مُستثناة).  الحرف المُمرّر يجب أن يكون أكبر من المحرف <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> مجالا (range) تصاعديًا من القيمة التي استُدعيت عبرها وحتى القيمة الممرّرة (القيمة المُمرّرة مُستثناة). ينبغي أن تكون القيمة الممررة أكبر من <code>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> مجالا (range) تصاعديًا من القيمة التي استُدعيت عبرها وحتى القيمة الممرّرة (القيمة المُمرّرة مُستثناة). ينبغي أن تكون القيمة الممررة أكبر من <code>Long.MIN_VALUE</code>، وإلّا فستعيد الدالة مجالا فارغًا.
 +
 
 +
يُلاحَظ وجود الكلمة المفتاحية <code>infix</code> للدلالة على أن هذه الدالة يمكن استدعاؤها بنمط التدوين الداخليّ (infix notation)؛ أي من خلال حذف المعامل <code>.</code>والأقواس <code>()</code> المُستخدَمَين في الاستدعاء عادةً، وللمزيد من التفاصيل راجع <nowiki/>[[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 functions)]].
  
 
== القيمة المُعادة ==
 
== القيمة المُعادة ==
مجال متدرّج (progression) تنازلي.
+
مجال (range) تصاعدي.
  
 
== مثال ==
 
== مثال ==
  
 
=== استخدام الدالة <code>until()‎</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>x</code> يساوي <code>5</code> [[Kotlin/Char|وحرفًا]] <code>y</code> يساوي <code>'a'</code>، ثم تنشئ مجالين عبر   استدعاء الدالة<code>until()‎</code> على <code>x</code> وتمرير العدد <code>9</code>، ثم استدعائها عبر <code>y</code> وتمرير الحرف <code>'f'</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/>أنظر أيضًا ==
 
==<nowiki/>أنظر أيضًا ==
*الثابتة<code>[[Kotlin/text/category|category]]</code>‎ : تساوي القيمة القصوى لبديل وحدة اليونيكود  (Unicode surrogate code unit).
+
* <code>[[Kotlin/ranges/downTo|downTo()]]</code>‎ : تعيد الدالة مجالا متدرّجًا (progression) تنازليًا من القيمة التي استُدعيت عبرها وحتى القيمة الممرّرة. ينبغي أن تكون القيمة الممررة أصغر من القيمة التي استُدعيت عبرها الدالة، وإلّا ستعيد الدالة مجالا متدرجا فارغًا.
 +
 
 
==مصادر==
 
==مصادر==
* [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]]
 
[[تصنيف:Kotlin functions]]

مراجعة 18:39، 2 يوليو 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()‎ مجالا (range) تصاعديًا من القيمة التي استُدعيت عبرها وحتى القيمة الممرّرة (القيمة المُمرّرة مُستثناة). ينبغي أن تكون القيمة الممررة أكبر من القيمة التي استُدعيت عبرها الدالة، وإلّا فستعيد الدالة مجالا فارغًا.

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

تعيد الدالة ‎until()‎ مجالا (range) تصاعديًا من القيمة التي استُدعيت عبرها وحتى القيمة الممرّرة (القيمة المُمرّرة مُستثناة). الحرف المُمرّر يجب أن يكون أكبر من المحرف '‎\u0000' أو ستعيد الدالة مجالا فارغًا.

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

تعيد الدالة ‎until()‎ مجالا (range) تصاعديًا من القيمة التي استُدعيت عبرها وحتى القيمة الممرّرة (القيمة المُمرّرة مُستثناة). ينبغي أن تكون القيمة الممررة أكبر من 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()‎ مجالا (range) تصاعديًا من القيمة التي استُدعيت عبرها وحتى القيمة الممرّرة (القيمة المُمرّرة مُستثناة). ينبغي أن تكون القيمة الممررة أكبر من Long.MIN_VALUE، وإلّا فستعيد الدالة مجالا فارغًا.

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

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

مجال (range) تصاعدي.

مثال

استخدام الدالة until()‎

في الشيفرة التالية نعرّف عددًا x يساوي 5 وحرفًا y يساوي 'a'، ثم تنشئ مجالين عبر استدعاء الدالةuntil()‎ على x وتمرير العدد 9، ثم استدعائها عبر y وتمرير الحرف 'f' كوسيط، ثم تطبع الناتج:

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

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

أنظر أيضًا

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

مصادر