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

من موسوعة حسوب
مراجعة 10:34، 16 مايو 2018 بواسطة محمد-بغات (نقاش | مساهمات) (أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE: الدالة <code>firstOrNull()‎</code> في لغة Kotlin}}</noinclude> تعيد الدالة<code>firstOrNull()‎</code> العنصر ا...')
(فرق) → مراجعة أقدم | المراجعة الحالية (فرق) | مراجعة أحدث ← (فرق)

تعيد الدالةfirstOrNull()‎ العنصر الأول من المصفوفة أو المجموعة التي استُدعيت عبرها، وفي حال تمرير دالة منطقية كمعامل فستعيد أول عنصر يحقق تلك الدالة.

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

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

في حال استدعاء الدالةfirst()‎ بدون معامل فستعيد العنصر الأول.

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

في حال استدعاء الدالةfirst()‎ مع دالة منطقية كمعامل فستعيد العنصر الأول الذي يحقق تلك الدالة.

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

في حال استدعاء الدالةfirst()‎ بدون معامل علىمجموعة أو لائحة فستعيد العنصر الأول الأول:

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

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

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

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

أمثلة

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

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

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

println(array.first()) // 9
}

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

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

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

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

انظر أيضًا

  • find()‎: تعيد العنصر الأول من المصفوفة أو المجموعة التي استُدعيت عبرها والذي يحقق الشرط المنطقي predicate المُمرّر إليها. وإن لم يكن هناك أي عنصر يحقق ذلك فستعيد null.
  • findLast()‎: تعيد العنصر الأخير من المصفوفة أو المجموعة التي استُدعيت عبرها والذي يحقق الشرط المنطقي predicate المُمرّر إليها. وإن لم يكن هناك أي عنصر يحقق ذلك فستعيد null.

مصادر