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

من موسوعة حسوب
< Kotlin‏ | collections
مراجعة 14:26، 29 مايو 2018 بواسطة محمد-بغات (نقاش | مساهمات) (أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE: الدالة <code>lastOrNull()‎</code> في لغة Kotlin}}</noinclude> تعيد الدالة<code>lastOrNull()‎</code> العنصر ال...')
(فرق) → مراجعة أقدم | المراجعة الحالية (فرق) | مراجعة أحدث ← (فرق)
اذهب إلى التنقل اذهب إلى البحث

تعيد الدالةlastOrNull()‎ العنصر الأخير من المصفوفة أو المجموعة أو اللائحة التي استُدعيت عبرها. في حال تمرير شرط منطقي predicate كوسيط فستعيد العنصر الأخير الذي يحقق ذلك الشرط.

في حال كانت المصفوفة أو المجموعة أو اللائحة التي استُدعيت عبرها الدالةlastOrNull()‎ فارغة أو لم يكن هناك أي عنصر يحقق الشرط المنطقي predicate فستطلق استثناءً NoSuchElementException.

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

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

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

يمكن تمرير وسيط predicate إلى الدالةlastOrNull()‎:

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

يمكن استدعاء الدالةlastOrNull()‎ على المجموعات:

fun <T> Iterable<T>.last(): T

يمكن استدعاء الدالةlastOrNull()‎ على اللوائح:

fun <T> List<T>.last(): T

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

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

العنصر الأخير من المصفوفة أو المجموعة أو اللائحة التي استُدعيت عبرها. في حال تمرير شرط منطقي predicate كوسيط فستعيد العنصر الأخير الذي يحقق ذلك الشرط.

أمثلة

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

تعرف الشيفرة الآتية مصفوفة باسم arrayمكونة من ستة أعداد باستخدام الدالة ()arrayOf، ثم تُعرّف الدالة المنطقية ()predicate التي تحدد ما إذا كان العدد المُمرّر إليها أصغر من 3 ، ثم تستخدم الدالة ()lastOrNull لإيجاد العنصر الأخير في المصفوفةarray الذي يحقق الدالة ()predicate، ثم تطبع الناتج:

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

println(array.last(predicate)) // 2
}

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

تعرف الشيفرة الآتية مصفوفة باسم arrayمكونة من ستة أعداد باستخدام الدالة ()arrayOf، ثم تُعرّف الدالة المنطقية ()predicate التي تحدد ما إذا كان العدد المُمرّر إليها أصغر من 0 ، ثم تستخدم الدالة ()last لإيجاد العنصر الأخير في المصفوفةarray الذي يحقق الدالة ()predicate، ولمّا كانت كل عناصر array لا تحقق ذلك فستطلق استثناءً NoSuchElementException، ثم تطبع الناتج:

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

println(array.last(predicate)) // إطلاق استثناء
}

انظر أيضًا

مصادر