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

من موسوعة حسوب
< Kotlin‏ | collections
مراجعة 11:35، 30 أغسطس 2018 بواسطة عبد اللطيف ايمش (نقاش | مساهمات) (استبدال النص - 'Kotlin Functions' ب'Kotlin Function')
اذهب إلى التنقل اذهب إلى البحث

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

تشبه هذه الدالةُ الدالةَ first()‎ تمامًا باستثناء أنها تعيد القيمة null بدلًا من رمي استثناءٍ إن كانت المصفوفة أو المجموعة التي استُدعيت الدالة last()‎ معها فارغة أو لم يكن هناك أي عنصر يحقق الدالة المنطقية الممرَّرة إليها.

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

يمكن استدعاء الدالة lastOrNull()‎ مع المصفوفات بدون تمرير أية معاملات:

fun <T> Array<out T>.lastOrNull(): T? 
fun ByteArray.lastOrNull(): Byte? 
fun ShortArray.lastOrNull(): Short? 
fun IntArray.lastOrNull(): Int? 
fun LongArray.lastOrNull(): Long? 
fun FloatArray.lastOrNull(): Float? 
fun DoubleArray.lastOrNull(): Double? 
fun BooleanArray.lastOrNull(): Boolean? 
fun CharArray.lastOrNull(): Char?

ويمكن أيضًا استدعاء هذه الدالة مع تمرير دالة تمثِّل شرطًا منطقيًّا إليها:

inline fun <T> Array<out T>.lastOrNull(
    predicate: (T) -> Boolean
): T? 
inline fun ByteArray.lastOrNull(
    predicate: (Byte) -> Boolean
): Byte?
inline fun ShortArray.lastOrNull(
    predicate: (Short) -> Boolean
): Short? 
inline fun IntArray.lastOrNull(
    predicate: (Int) -> Boolean
): Int? 
inline fun LongArray.lastOrNull(
    predicate: (Long) -> Boolean
): Long? 
inline fun FloatArray.lastOrNull(
    predicate: (Float) -> Boolean
): Float? 
inline fun DoubleArray.lastOrNull(
    predicate: (Double) -> Boolean
): Double? 
inline fun BooleanArray.lastOrNull(
    predicate: (Boolean) -> Boolean
): Boolean? 
inline fun CharArray.lastOrNull(
    predicate: (Char) -> Boolean
): Char? 
inline fun <T> Iterable<T>.lastOrNull(
    predicate: (T) -> Boolean
): T? 
inline fun <T> List<T>.lastOrNull(
    predicate: (T) -> Boolean
): T?

ويمكن استعمال الدالة أيضًا مع المجموعات والقوائم:

fun <T> Iterable<T>.lastOrNull(): T? 

fun <T> List<T>.lastOrNull(): T?

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

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

يُعاد آخر عنصر من عناصر المصفوفة أو المجموعة المعطاة إن لم يُمرَّر إلى الدالة أي معامل، أو آخر عنصر يحقق شرطًا معيَّنًا في حال تمرير دالة منطقية كمعامل، أو القيمة nulll إن كانت المصفوفة أو المجموعة المعطاة فارغة أو لم يكن هناك أي عنصر يحقق ذلك الشرط المعطى.

أمثلة

استخدام الدالة ()lastOrNull مع المصفوفات: عدم تمرير أي معامل

تعرف الشيفرة الآتية مصفوفة باسم array باستخدام الدالة ()arrayOf ثمَّ تستخدم الدالة ()lastOrNull لجلب العنصر الأخير من تلك المصفوفة:

fun main(args: Array<String>) {
    val array = arrayOf(9, 2, 3, 8, 5, 6)

    println(array.lastOrNull()) // 6
}

استخدام الدالة ()lastOrNull مع المصفوفات: تمرير معامل

تعرف الشيفرة الآتية مصفوفة باسم array باستخدام الدالة ()arrayOf ثمَّ تستخدم الدالة ()lastOrNull لجلب العنصر الأخير من تلك المصفوفة شرط أن يكون سالبًا:

fun main(args: Array<String>) {
    val array = arrayOf(9, 2, 3, 8, 5, 6)
    val predicate: (Int) -> Boolean = { it < 0}

    println(array.lastOrNull(predicate)) // null
}

انظر أيضًا

  • الدالة firstOrNull()‎: تجلب أول عنصر من عناصر المصفوفة أو المجموعة التي استُدعيت معها إن لم يُمرَّر إليها أي شيء، أو أول عنصر يحقق شرطًا معيَّنًا في حال تمرير دالة منطقية إليها. 
  • الدالة last()‎: تجلب آخر عنصر من عناصر المصفوفة أو المجموعة التي استُدعيت معها إن لم يمرر إليها أي شيء، أو آخر عنصر يحق شرطًا معيَّنًا في حال تمرير دالة منطقية إليها.
  • الدالة lastIndexOf()‎: تجلب فهرس آخر ظهور لعنصر محدَّد من المصفوفة أو المجموعة أو القائمة التي استُدعيت معها.
  • الدالة filterNotNull()‎: تعيد جميع عناصر المصفوفة أو المجموعة المعطاة باستثناء تلك ذات القيمة null.

مصادر