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

من موسوعة حسوب
لا ملخص تعديل
ط مراجعة وتدقيق.
سطر 1: سطر 1:
<noinclude>{{DISPLAYTITLE: الدالة getOrElse()‎ في لغة Kotlin}}</noinclude>
<noinclude>{{DISPLAYTITLE: الدالة <code>getOrElse()‎</code> في Kotlin}}</noinclude>
تعيد الدالة <code>getOrElse()‎</code> قيمة العنصر عند الفهرس <code>index</code> المُحدَّد في [[Kotlin/Array|المصفوفة]] أو [[Kotlin/collections|المجموعة]] التي استُدعيت عبرها. ، أو نتيجة استدعاء  الدالة المُمرّرة  <code>defaultValue</code> إن كان الفهرس خارج الحدود.
تجلب الدالة <code>getOrElse()‎</code> عنصرًا ذي فهرس مُحدَّد من [[Kotlin/Array|المصفوفة]] أو [[Kotlin/collections|المجموعة]] التي استُدعيت معها أو القيمة المقابلة لمفتاح محدَّد إن استدعيت مع خريطة. إن كان الفهرس المعطى يقع خارج حدود المصفوفة أو المجموعة أو كان المفتاح المعطى غير موجود في الخريطة، فسيُعاد ناتج استدعاء دالة معيَّنة معطاة.
 
ان استُدعيت الدالة عبر [[Kotlin/collections/Map|قاموس]] فستُعيد القيمة المقابلة للمفتاح <code>key</code> المُمرّر إلى الدالة، أو نتيجة استدعاء  الدالة المُمرّرة  <code>defaultValue</code> إن كان المفتاح <code>key</code> موجودًا.
== البنية العامة ==
== البنية العامة ==
يمكن استدعاء  الدالة <code>getOrElse()‎</code> عبر [[Kotlin/Array|المصفوفات]]:<syntaxhighlight lang="kotlin">
يمكن استدعاء  الدالة <code>getOrElse()‎</code> مع [[Kotlin/Array|المصفوفات]]:<syntaxhighlight lang="kotlin">
inline fun <T> Array<out T>.getOrElse(
inline fun <T> Array<out T>.getOrElse(
     index: Int,  
     index: Int,  
سطر 42: سطر 40:
): Char  
): Char  


</syntaxhighlight>يمكن استدعاء  الدالة <code>getOrElse()‎</code> عبر [[Kotlin/collections|المجموعات]]:<syntaxhighlight lang="kotlin">
</syntaxhighlight>ويمكن استدعاؤها مع [[Kotlin/collections|المجموعات]]:<syntaxhighlight lang="kotlin">
inline fun <T> List<T>.getOrElse(
inline fun <T> List<T>.getOrElse(
     index: Int,  
     index: Int,  
     defaultValue: (Int) -> T
     defaultValue: (Int) -> T
): T  
): T  
</syntaxhighlight>يمكن استدعاء  الدالة <code>getOrElse()‎</code> عبر [[Kotlin/collections|القواميس]]:<syntaxhighlight lang="kotlin">
</syntaxhighlight>ويمكن استدعاؤها أيضًا مع الخرائط:<syntaxhighlight lang="kotlin">
inline fun <K, V> Map<K, V>.getOrElse(
inline fun <K, V> Map<K, V>.getOrElse(
     key: K,  
     key: K,  
     defaultValue: () -> V
     defaultValue: () -> V
): V
): V
</syntaxhighlight>يُلاحَظ وجود الكلمة المفتاحية <code>inline</code> للدلالة على أن هذه الدالة مباشرة، وللمزيد من التفاصيل راجع <nowiki/>[[Kotlin/inline functions|توثيق الدوال المباشرة (inline functions)]].
</syntaxhighlight>وجود الكلمة المفتاحية <code>inline</code> يدل على أنَّ هذه الدالة مباشرة (للمزيد من التفاصيل، راجع صفحة <nowiki/>[[Kotlin/inline functions|الدوال المباشرة (inline functions)]]).


== القيم المعادة ==
== القيم المعادة ==
قيمة العنصر عند الفهرس <code>index</code> المُحدَّد في [[Kotlin/Array|المصفوفة]] أو [[Kotlin/collections|المجموعة]] التي استُدعيت عبرها. ، أو نتيجة استدعاء  الدالة المُمرّرة  <code>defaultValue</code> إن كان الفهرس خارج الحدود.
تُعاد قيمة العنصر ذي الفهرس <code>index</code> المُحدَّد في [[Kotlin/Array|المصفوفة]] أو [[Kotlin/collections|المجموعة]] المعطاة أو القيمة المقابلة لمفتاح محدَّد في الخريطة المعطاة. إن كان الفهرس المعطى يقع خارج حدود المصفوفة أو المجموعة أو كان المفتاح المعطى غير موجود في الخريطة، فسيُعاد ناتج استدعاء الدالة <code>defaultValue</code> المعطاة.
 
ان استُدعيت الدالة عبر [[Kotlin/collections/Map|قاموس]] فستُعيد القيمة المقابلة للمفتاح <code>key</code> المُمرّر إلى الدالة، أو نتيجة استدعاء الدالة المُمرّرة  <code>defaultValue</code> إن كان المفتاح <code>key</code> موجودًا.
== أمثلة ==
== أمثلة ==
 
تُنشئ الشيفرة الآتية خريطة باسم <code>map</code> بواسطة الدالة <code>mutableMapOf()</code>‎ ثم تستدعي الدالة <code>getOrElse()</code>‎ مع تلك الخريطة لجلب بعض القيم منها عبر تمرير قيمة المفتاح وتعيين دالة ثابتة تساوي 1:<syntaxhighlight lang="kotlin">
=== استخدام الدالة<code>getOrElse()‎</code> على قاموس ===
تُنشئ الشيفرة الآتية [[Kotlin/collections|قاموسًا]] باسم <code>map</code> بواسطة الدالة <code>mutableMapOf()</code>‎: ثم تستدعي <code>getOrElse()</code>‎ عبر <code>map</code> لأجل استعادة بعض القيم منه بتمرير قيمة المفتاح ودالة ثابتة تساوي 1:<syntaxhighlight lang="kotlin">
fun main(args: Array<String>) {
fun main(args: Array<String>) {
val map = mutableMapOf<String, Int?>()
    val map = mutableMapOf<String, Int?>()
println(map.getOrElse("x") { 1 }) // 1
    println(map.getOrElse("x") { 1 }) // 1


map["x"] = 3
    map["x"] = 3
println(map.getOrElse("x") { 1 }) // 3
    println(map.getOrElse("x") { 1 }) // 3


map["x"] = null
    map["x"] = null
println(map.getOrElse("x") { 1 }) // 1
    println(map.getOrElse("x") { 1 }) // 1
}
}
</syntaxhighlight>
</syntaxhighlight>


== انظر أيضًا ==
== انظر أيضًا ==
* <code>[[Kotlin/collections/getOrNull|getOrNull]]()‎</code>: تعيد قيمة العنصر عند الفهرس <code>index</code> المُحدَّد في [[Kotlin/Array|المصفوفة]] أو [[Kotlin/collections|المجموعة]] التي استُدعيت عبرها. ، أو <code>null</code> إن كان الفهرس خارج الحدود.
* الدالة <code>[[Kotlin/collections/getOrNull|getOrNull()‎]]</code>: تجلب عنصرًا ذي فهرس مُحدَّد من [[Kotlin/Array|المصفوفة]] أو [[Kotlin/collections|المجموعة]] التي استُدعيت معها أو تعيد القيمة <code>null</code> إن كان الفهرس المعطى يقع خارج حدود المصفوفة أو المجموعة.
* الدالة <code>[[Kotlin/collections/elementAtOrElse|elementAtOrElse()‎]]</code>: تجلب عنصرًا ذي فهرس معيَّن من <nowiki/>[[Kotlin/Array|المصفوفة]] أو <nowiki/>[[Kotlin/Array|المجموعة]] التي استُدعيت معها. إن كان الفهرس المعطى خارج حدود <nowiki/>[[Kotlin/Array|المصفوفة]] أو <nowiki/>[[Kotlin/Array|المجموعة]]، فستُعيد الدالة ناتج استدعاء دالة معينة.
* الدالة <code>[[Kotlin/collections/filterNot|filterNot()]]</code>‎: تعيد قائمةً تحوي عناصر <nowiki/>[[Kotlin/Array|المصفوفة]] أو <nowiki/>[[Kotlin/collections|المجموعة]] التي لا تحقق شرطًا منطقيًّا محدَّدًا. إن استدعيت مع خريطة (map)، فستعيد خريطة جديدة تحوي الأزواج التي لم تحقق ذلك الشرط المنطقي.


== مصادر ==
== مصادر ==
* [https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/get-or-else.html الدالة getOrElse()‎ في التوثيق الرسمي للمكتبة القياسية في لغة Kotlin]
* [https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/get-or-else.html صفحة الدالة getOrElse()‎ في التوثيق الرسمي للمكتبة القياسية في لغة Kotlin]
[[تصنيف:Kotlin]]
[[تصنيف:Kotlin]]
[[تصنيف:Kotlin Methods]]
[[تصنيف:Kotlin Methods]]

مراجعة 16:48، 23 يوليو 2018

تجلب الدالة getOrElse()‎ عنصرًا ذي فهرس مُحدَّد من المصفوفة أو المجموعة التي استُدعيت معها أو القيمة المقابلة لمفتاح محدَّد إن استدعيت مع خريطة. إن كان الفهرس المعطى يقع خارج حدود المصفوفة أو المجموعة أو كان المفتاح المعطى غير موجود في الخريطة، فسيُعاد ناتج استدعاء دالة معيَّنة معطاة.

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

يمكن استدعاء الدالة getOrElse()‎ مع المصفوفات:

inline fun <T> Array<out T>.getOrElse(
    index: Int, 
    defaultValue: (Int) -> T
): T 
inline fun ByteArray.getOrElse(
    index: Int, 
    defaultValue: (Int) -> Byte
): Byte 
inline fun ShortArray.getOrElse(
    index: Int, 
    defaultValue: (Int) -> Short
): Short 
inline fun IntArray.getOrElse(
    index: Int, 
    defaultValue: (Int) -> Int
): Int 
inline fun LongArray.getOrElse(
    index: Int, 
    defaultValue: (Int) -> Long
): Long 
inline fun FloatArray.getOrElse(
    index: Int, 
    defaultValue: (Int) -> Float
): Float 
inline fun DoubleArray.getOrElse(
    index: Int, 
    defaultValue: (Int) -> Double
): Double 
inline fun BooleanArray.getOrElse(
    index: Int, 
    defaultValue: (Int) -> Boolean
): Boolean 
inline fun CharArray.getOrElse(
    index: Int, 
    defaultValue: (Int) -> Char
): Char

ويمكن استدعاؤها مع المجموعات:

inline fun <T> List<T>.getOrElse(
    index: Int, 
    defaultValue: (Int) -> T
): T

ويمكن استدعاؤها أيضًا مع الخرائط:

inline fun <K, V> Map<K, V>.getOrElse(
    key: K, 
    defaultValue: () -> V
): V

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

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

تُعاد قيمة العنصر ذي الفهرس index المُحدَّد في المصفوفة أو المجموعة المعطاة أو القيمة المقابلة لمفتاح محدَّد في الخريطة المعطاة. إن كان الفهرس المعطى يقع خارج حدود المصفوفة أو المجموعة أو كان المفتاح المعطى غير موجود في الخريطة، فسيُعاد ناتج استدعاء الدالة defaultValue المعطاة.

أمثلة

تُنشئ الشيفرة الآتية خريطة باسم map بواسطة الدالة mutableMapOf()‎ ثم تستدعي الدالة getOrElse()‎ مع تلك الخريطة لجلب بعض القيم منها عبر تمرير قيمة المفتاح وتعيين دالة ثابتة تساوي 1:

fun main(args: Array<String>) {
    val map = mutableMapOf<String, Int?>()
    println(map.getOrElse("x") { 1 }) // 1

    map["x"] = 3
    println(map.getOrElse("x") { 1 }) // 3

    map["x"] = null
    println(map.getOrElse("x") { 1 }) // 1
}

انظر أيضًا

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

مصادر