الدالة getOrElse()‎ في Kotlin

من موسوعة حسوب

تجلب الدالة 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

دالةٌ تُستدعَى عندما يقع الفهرس index خارج حدود المصفوفة أو المجموعة أو الخريطة المعطاة.

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

تُعاد قيمة العنصر ذي الفهرس 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)، فستعيد خريطة جديدة تحوي الأزواج التي لم تحقق ذلك الشرط المنطقي.

مصادر