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

من موسوعة حسوب
أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE: الدالة <code>lastOrNull()‎</code> في لغة Kotlin}}</noinclude> تعيد الدالة<code>lastOrNull()‎</code> العنصر ال...'
 
طلا ملخص تعديل
 
(4 مراجعات متوسطة بواسطة 3 مستخدمين غير معروضة)
سطر 1: سطر 1:
<noinclude>{{DISPLAYTITLE: الدالة <code>lastOrNull()‎</code> في لغة Kotlin}}</noinclude>
<noinclude>{{DISPLAYTITLE: الدالة <code>lastOrNull()‎</code> في Kotlin}}</noinclude>
تعيد الدالة<code>lastOrNull()‎</code> العنصر الأخير من [[Kotlin/Array|المصفوفة]] أو [[Kotlin/collections|المجموعة]] أو [[Kotlin/List|اللائحة]] التي استُدعيت عبرها. في حال تمرير شرط منطقي <code>predicate</code> كوسيط فستعيد العنصر الأخير الذي يحقق ذلك الشرط.
تجلب الدالة <code>lastOrNull()‎</code> آخر عنصر من عناصر <nowiki/>[[Kotlin/Array|المصفوفة]] أو <nowiki/>[[Kotlin/collections|المجموعة]] التي استُدعيت معها إن لم يُمرَّر إليها أي شيء، أو آخر عنصر يحقق شرطًا معيَّنًا في حال تمرير دالة منطقية إليها.
 
تشبه هذه الدالةُ الدالةَ <code>[[Kotlin/collections/first|first()‎]]</code> تمامًا باستثناء أنها تعيد القيمة <code>null</code> بدلًا من رمي استثناءٍ إن كانت <nowiki/>[[Kotlin/Array|المصفوفة]] أو <nowiki/>[[Kotlin/collections|المجموعة]] التي استُدعيت الدالة <code>last()‎</code> معها فارغة أو لم يكن هناك أي عنصر يحقق الدالة المنطقية الممرَّرة إليها.


في حال كانت [[Kotlin/Array|المصفوفة]] أو [[Kotlin/collections|المجموعة]] أو [[Kotlin/List|اللائحة]] التي استُدعيت عبرها الدالة<code>lastOrNull()‎</code> فارغة أو لم يكن هناك أي عنصر يحقق الشرط المنطقي <code>predicate</code> فستطلق استثناءً <code>NoSuchElementException</code>.
==البنية العامة==
==البنية العامة==
يمكن استدعاء الدالة<code>lastOrNull()‎</code> على [[Kotlin/Array|المصفوفات]]:<syntaxhighlight lang="kotlin">
يمكن استدعاء الدالة <code>lastOrNull()‎</code> مع المصفوفات بدون تمرير أية معاملات:<syntaxhighlight lang="kotlin">
fun <T> Array<out T>.last(): T  
fun <T> Array<out T>.lastOrNull(): T?
fun ByteArray.last(): Byte  
fun ByteArray.lastOrNull(): Byte?
fun ShortArray.last(): Short  
fun ShortArray.lastOrNull(): Short?
fun IntArray.last(): Int  
fun IntArray.lastOrNull(): Int?
fun LongArray.last(): Long  
fun LongArray.lastOrNull(): Long?
fun FloatArray.last(): Float  
fun FloatArray.lastOrNull(): Float?
fun DoubleArray.last(): Double  
fun DoubleArray.lastOrNull(): Double?
fun BooleanArray.last(): Boolean  
fun BooleanArray.lastOrNull(): Boolean?
fun CharArray.last(): Char  
fun CharArray.lastOrNull(): Char?


</syntaxhighlight>يمكن تمرير وسيط <code>predicate</code> إلى الدالة<code>lastOrNull()‎</code>:<syntaxhighlight lang="kotlin">
</syntaxhighlight>ويمكن أيضًا استدعاء هذه الدالة مع تمرير دالة تمثِّل شرطًا منطقيًّا إليها:<syntaxhighlight lang="kotlin">
inline fun <T> Array<out T>.last(
inline fun <T> Array<out T>.lastOrNull(
     predicate: (T) -> Boolean
     predicate: (T) -> Boolean
): T  
): T?
inline fun ByteArray.last(predicate: (Byte) -> Boolean): Byte (source)
inline fun ByteArray.lastOrNull(
inline fun ShortArray.last(
    predicate: (Byte) -> Boolean
): Byte?
inline fun ShortArray.lastOrNull(
     predicate: (Short) -> Boolean
     predicate: (Short) -> Boolean
): Short  
): Short?
inline fun IntArray.last(predicate: (Int) -> Boolean): Int (source)
inline fun IntArray.lastOrNull(
inline fun LongArray.last(predicate: (Long) -> Boolean): Long (source)
    predicate: (Int) -> Boolean
inline fun FloatArray.last(
): Int?
inline fun LongArray.lastOrNull(
    predicate: (Long) -> Boolean
): Long?
inline fun FloatArray.lastOrNull(
     predicate: (Float) -> Boolean
     predicate: (Float) -> Boolean
): Float  
): Float?
inline fun DoubleArray.last(
inline fun DoubleArray.lastOrNull(
     predicate: (Double) -> Boolean
     predicate: (Double) -> Boolean
): Double  
): Double?
inline fun BooleanArray.last(
inline fun BooleanArray.lastOrNull(
     predicate: (Boolean) -> Boolean
     predicate: (Boolean) -> Boolean
): Boolean  
): Boolean?
inline fun CharArray.last(predicate: (Char) -> Boolean): Char  
inline fun CharArray.lastOrNull(
inline fun <T> Iterable<T>.last(predicate: (T) -> Boolean): T  
    predicate: (Char) -> Boolean
inline fun <T> List<T>.last(predicate: (T) -> Boolean): T  
): Char?
</syntaxhighlight>يمكن استدعاء  الدالة<code>lastOrNull()‎</code> على [[Kotlin/collections|المجموعات]]:<syntaxhighlight lang="kotlin">
inline fun <T> Iterable<T>.lastOrNull(
fun <T> Iterable<T>.last(): T
    predicate: (T) -> Boolean
): T?
inline fun <T> List<T>.lastOrNull(
    predicate: (T) -> Boolean
): T?
 
</syntaxhighlight>ويمكن استعمال الدالة أيضًا مع المجموعات والقوائم:<syntaxhighlight lang="kotlin">
fun <T> Iterable<T>.lastOrNull(): T?


</syntaxhighlight>يمكن استدعاء  الدالة<code>lastOrNull()‎</code> على [[Kotlin/List|اللوائح]]:<syntaxhighlight lang="kotlin">
fun <T> List<T>.lastOrNull(): T?
fun <T> List<T>.last(): T
</syntaxhighlight>وجود الكلمة المفتاحية <code>inline</code> يدل على أنَّ هذه الدالة مباشرة (للمزيد من التفاصيل، راجع صفحة <nowiki/>[[Kotlin/inline functions|الدوال المباشرة (inline functions)]]).


</syntaxhighlight>يُلاحَظ وجود الكلمة المفتاحية <code>inline</code> للدلالة على أن هذه الدالة مباشرة، وللمزيد من التفاصيل راجع <nowiki/>[[Kotlin/inline functions|توثيق الدوال المباشرة (inline functions)]].
== المعاملات ==
==القيم المٌعادة==
 
العنصر الأخير من [[Kotlin/Array|المصفوفة]] أو [[Kotlin/collections|المجموعة]] أو [[Kotlin/List|اللائحة]] التي استُدعيت عبرها. في حال تمرير شرط منطقي <code>predicate</code> كوسيط فستعيد العنصر الأخير الذي يحقق ذلك الشرط.
=== <code>predicate</code> ===
دالةٌ تطبق على كل عنصر من عناصر [[Kotlin/Array|المصفوفة]] أو <nowiki/>[[Kotlin/collections|المجموعة]] المعطاة. يمرر إليها العنصر ثم تعيد القيمة المنطقية المقابلة له.
 
==القيم المعادة==
يُعاد آخر عنصر من عناصر <nowiki/>[[Kotlin/Array|المصفوفة]] أو <nowiki/>[[Kotlin/collections|المجموعة]] المعطاة إن لم يُمرَّر إلى الدالة أي معامل، أو آخر عنصر يحقق شرطًا معيَّنًا في حال تمرير دالة منطقية كمعامل، أو القيمة <code>nulll</code> إن كانت <nowiki/>[[Kotlin/Array|المصفوفة]] أو <nowiki/>[[Kotlin/collections|المجموعة]] المعطاة فارغة أو لم يكن هناك أي عنصر يحقق ذلك الشرط المعطى.
==أمثلة==
==أمثلة==
===استخدام الدالة <code>()lastOrNull</code> مع المصفوفات: الحالة الأولى===
تعرف الشيفرة الآتية <nowiki/>[[Kotlin/Array|مصفوفة]] باسم <code>array</code> باستخدام الدالة <code>()arrayOf</code> ثمَّ تستخدم الدالة <code>()lastOrNull</code> لجلب العنصر الأخير من تلك المصفوفة والعنصر الأخير السالب<nowiki/>:<syntaxhighlight lang="kotlin">
تعرف الشيفرة الآتية <nowiki/>[[Kotlin/Array|مصفوفة]] باسم <code>array</code>مكونة من ستة أعداد باستخدام الدالة <code>()arrayOf</code>، ثم تُعرّف الدالة المنطقية <code>()predicate</code> التي تحدد ما إذا كان العدد المُمرّر إليها أصغر من <code>3</code> ، ثم تستخدم الدالة <code>()lastOrNull</code> لإيجاد العنصر الأخير في [[Kotlin/Array|المصفوفة]]<code>array</code> الذي يحقق الدالة <code>()predicate</code>، ثم تطبع الناتج:<syntaxhighlight lang="kotlin">
fun main(args: Array<String>) {
fun main(args: Array<String>) {
val array = arrayOf(9, 2, 3, 8, 5, 6)
    val array = arrayOf(9, 2, 3, 8, 5, 6)
val predicate  : (Int) -> Boolean = { it < 3 }


println(array.last(predicate)) // 2
    println(array.lastOrNull()) // 6
    println(array.lastOrNull(predicate)) // null
}
}
</syntaxhighlight>
</syntaxhighlight>
===استخدام الدالة <code>()lastOrNull</code> مع المصفوفات: الحالة الثانية===
==انظر أيضًا==
تعرف الشيفرة الآتية <nowiki/>[[Kotlin/Array|مصفوفة]] باسم <code>array</code>مكونة من ستة أعداد باستخدام الدالة <code>()arrayOf</code>، ثم تُعرّف الدالة المنطقية <code>()predicate</code> التي تحدد ما إذا كان العدد المُمرّر إليها أصغر من <code>0</code> ، ثم تستخدم الدالة <code>()last</code> لإيجاد العنصر الأخير في [[Kotlin/Array|المصفوفة]]<code>array</code> الذي يحقق الدالة <code>()predicate</code>، ولمّا كانت كل عناصر <code>array</code> لا تحقق ذلك فستطلق استثناءً <code>NoSuchElementException</code>، ثم تطبع الناتج:<syntaxhighlight lang="kotlin">
*الدالة <code>[[Kotlin/collections/firstOrNull|firstOrNull()‎]]</code>: تجلب أول عنصر من عناصر [[Kotlin/Array|المصفوفة]] أو [[Kotlin/collections|المجموعة]] التي استُدعيت معها إن لم يُمرَّر إليها أي شيء، أو أول عنصر يحقق شرطًا معيَّنًا في حال تمرير دالة منطقية إليها. 
fun main(args: Array<String>) {
*الدالة <code>[[Kotlin/collections/last|last()]]</code>‎: تجلب آخر عنصر من عناصر <nowiki/>[[Kotlin/Array|المصفوفة]] أو <nowiki/>[[Kotlin/collections|المجموعة]] التي استُدعيت معها إن لم يمرر إليها أي شيء، أو آخر عنصر يحق شرطًا معيَّنًا في حال تمرير دالة منطقية إليها.
val array = arrayOf(9, 2, 3, 2, 5, 1)
* الدالة <code>[[Kotlin/collections/lastIndexOf|lastIndexOf()]]</code>‎: تجلب فهرس آخر ظهور لعنصر محدَّد من <nowiki/>[[Kotlin/Array|المصفوفة]] أو <nowiki/>[[Kotlin/collections|المجموعة]] أو القائمة التي استُدعيت معها.
val predicate  : (Int) -> Boolean = { it < 0 }
*الدالة <code>[[Kotlin/collections/filterNotNull|filterNotNull()‎]]</code>: تعيد جميع عناصر <nowiki/>[[Kotlin/Array|المصفوفة]] أو <nowiki/>[[Kotlin/collections|المجموعة]] المعطاة باستثناء تلك ذات القيمة <code>null</code>.


println(array.last(predicate)) // إطلاق استثناء
}
</syntaxhighlight>
==انظر أيضًا==
*<code>[[Kotlin/collections/lastIndexOf|lastIndexOf()]]</code>‎: تعيد آخر فهرس للعنصر الممرّر في [[Kotlin/Array|المصفوفة]] أو [[Kotlin/collections|المجموعة]] التي استُدعيت عبرها. وإن لم يكن العنصر موجودًا  فستعيد ‎<code>-1‎</code>.
==مصادر==
==مصادر==
*[https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/last.html الدالة  lastOrNull()‎ في التوثيق الرسميّ للمكتبة القياسيّة في لغة Kotlin.]
*[https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/last-or-null.html صفحة الدالة lastOrNull()‎ في التوثيق الرسميّ للمكتبة القياسيّة في لغة Kotlin.]
[[تصنيف:Kotlin]]
[[تصنيف:Kotlin]]
[[تصنيف:Kotlin Functions]]
[[تصنيف:Kotlin Function]]
[[تصنيف:Kotlin Collection]]

المراجعة الحالية بتاريخ 08:24، 8 سبتمبر 2018

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

المعاملات

predicate

دالةٌ تطبق على كل عنصر من عناصر المصفوفة أو المجموعة المعطاة. يمرر إليها العنصر ثم تعيد القيمة المنطقية المقابلة له.

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

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

أمثلة

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

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

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

انظر أيضًا

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

مصادر