الفرق بين المراجعتين ل"Kotlin/collections/singleOrNull"

من موسوعة حسوب
اذهب إلى التنقل اذهب إلى البحث
(أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE: الدالة <code>singleOrNull()‎</code> في لغة Kotlin}}</noinclude> تعيد الدالة<code>singleOrNull()‎</code>العنصر...')
 
سطر 1: سطر 1:
 
<noinclude>{{DISPLAYTITLE: الدالة <code>singleOrNull()‎</code> في لغة Kotlin}}</noinclude>
 
<noinclude>{{DISPLAYTITLE: الدالة <code>singleOrNull()‎</code> في لغة Kotlin}}</noinclude>
تعيد الدالة<code>singleOrNull()‎</code>العنصر الوحيد الموجود في [[Kotlin/Array|المصفوفة]] أو <nowiki/>[[Kotlin/collections|المجموعة]] أو [[Kotlin/List|اللائحة]] التي استُدعيت عبرها، وفي حال تمرير شرط منطقي <code>predicate</code> كمعامل (parameter) فستعيد العنصر الوحيد الذي يحقق ذلك الشرط المنطقي. أمّا في حال كانت الكائن الذي استُدعيت عبره يحتوي أكثر من عنصر واحد (يحقق <code>predicate</code>  في حال تمريرها) أو لا يحتوي أي واحد (يحقق <code>predicate</code>  في حال تمريرها) فستطلق الدالة  <code>singleOrNull()‎</code>[[Kotlin/exceptions|استثناءً]].
+
تعيد الدالة<code>singleOrNull()‎</code>العنصر الوحيد الموجود في [[Kotlin/Array|المصفوفة]] أو <nowiki/>[[Kotlin/collections|المجموعة]] أو [[Kotlin/List|اللائحة]] التي استُدعيت عبرها، وفي حال تمرير شرط منطقي <code>predicate</code> كمعامل (parameter) فستعيد العنصر الوحيد الذي يحقق ذلك الشرط المنطقي. أمّا في حال كان الكائن الذي استُدعيت عبره يحتوي أكثر من عنصر واحد (يحقق <code>predicate</code>  في حال تمريرها) أو لا يحتوي أي واحد (يحقق <code>predicate</code>  في حال تمريرها) فستعيد القيمة المعدومة <code>null</code>.
 
==البنية العامة==
 
==البنية العامة==
في حال استدعاء الدالة <code>singleOrNull()‎</code> عبر <nowiki/>[[Kotlin/Array|مصفوفة]] دون تمرير أي معامل (parameter) فستعيد العنصر الوحيد الموجود في تلك <nowiki/>[[Kotlin/Array|المصفوفة]]. وفي حال كانت تلك [[Kotlin/Array|المصفوفة]] فارغة أو تحتوي أكثر من عنصر واحد فستطلق الدالة  <code>singleOrNull()‎</code>[[Kotlin/exceptions|استثناءً]]:<syntaxhighlight lang="kotlin">
+
في حال استدعاء الدالة <code>singleOrNull()‎</code> عبر <nowiki/>[[Kotlin/Array|مصفوفة]] دون تمرير أي معامل (parameter) فستعيد العنصر الوحيد الموجود في تلك <nowiki/>[[Kotlin/Array|المصفوفة]]. وفي حال كانت تلك [[Kotlin/Array|المصفوفة]] فارغة أو تحتوي أكثر من عنصر واحد فستعيد القيمة المعدومة <code>null</code>:<syntaxhighlight lang="kotlin">
fun <T> Array<out T>.single(): T  
+
fun <T> Array<out T>.singleOrNull(): T?
fun ByteArray.single(): Byte  
+
fun ByteArray.singleOrNull(): Byte?
fun ShortArray.single(): Short  
+
fun ShortArray.singleOrNull(): Short?
fun IntArray.single(): Int  
+
fun IntArray.singleOrNull(): Int?
fun LongArray.single(): Long  
+
fun LongArray.singleOrNull(): Long?
fun FloatArray.single(): Float  
+
fun FloatArray.singleOrNull(): Float?
fun DoubleArray.single(): Double  
+
fun DoubleArray.singleOrNull(): Double?
fun BooleanArray.single(): Boolean
+
fun BooleanArray.singleOrNull(): Boolean?
fun CharArray.single(): Char
+
fun CharArray.singleOrNull(): Char?
</syntaxhighlight>في حال استدعاء الدالة <code>singleOrNull()‎</code> عبر <nowiki/>[[Kotlin/Array|مصفوفة]] مع تمرير شرط منطقي <code>predicate</code> كمعامل (parameter) فستعيد العنصر الوحيد الذي يحقق ذلك الشرط المنطقي في تلك <nowiki/>[[Kotlin/Array|المصفوفة]]. وفي حال كانت تلك [[Kotlin/Array|المصفوفة]] تحتوي أكثر من عنصر واحد يحقق ذلك الشرط المنطقي أو لا تحتوي أي واحد فستطلق الدالة  <code>single()‎</code>[[Kotlin/exceptions|استثناءً]]:<syntaxhighlight lang="kotlin">
+
</syntaxhighlight>في حال استدعاء الدالة <code>singleOrNull()‎</code> عبر <nowiki/>[[Kotlin/Array|مصفوفة]] مع تمرير شرط منطقي <code>predicate</code> كمعامل (parameter) فستعيد العنصر الوحيد الذي يحقق ذلك الشرط المنطقي في تلك <nowiki/>[[Kotlin/Array|المصفوفة]]. وفي حال كانت تلك [[Kotlin/Array|المصفوفة]] تحتوي أكثر من عنصر واحد يحقق ذلك الشرط المنطقي أو لا تحتوي أي واحد فستعيد القيمة المعدومة <code>null</code>:<syntaxhighlight lang="kotlin">
inline fun <T> Array<out T>.single(
+
inline fun <T> Array<out T>.singleOrNull(
 
     predicate: (T) -> Boolean
 
     predicate: (T) -> Boolean
): T  
+
): T?
inline fun ByteArray.single(
+
inline fun ByteArray.singleOrNull(
 
     predicate: (Byte) -> Boolean
 
     predicate: (Byte) -> Boolean
): Byte  
+
): Byte?
inline fun ShortArray.single(
+
inline fun ShortArray.singleOrNull(
 
     predicate: (Short) -> Boolean
 
     predicate: (Short) -> Boolean
): Short  
+
): Short?
inline fun IntArray.single(predicate: (Int) -> Boolean): Int (source)
+
inline fun IntArray.singleOrNull(
inline fun LongArray.single(
+
    predicate: (Int) -> Boolean
 +
): Int?
 +
inline fun LongArray.singleOrNull(
 
     predicate: (Long) -> Boolean
 
     predicate: (Long) -> Boolean
): Long  
+
): Long?
inline fun FloatArray.single(
+
inline fun FloatArray.singleOrNull(
 
     predicate: (Float) -> Boolean
 
     predicate: (Float) -> Boolean
): Float  
+
): Float?
inline fun DoubleArray.single(
+
inline fun DoubleArray.singleOrNull(
 
     predicate: (Double) -> Boolean
 
     predicate: (Double) -> Boolean
): Double
+
): Double?
inline fun BooleanArray.single(
+
inline fun BooleanArray.singleOrNull(
 
     predicate: (Boolean) -> Boolean
 
     predicate: (Boolean) -> Boolean
): Boolean  
+
): Boolean?
inline fun CharArray.single(
+
inline fun CharArray.singleOrNull(
 
     predicate: (Char) -> Boolean
 
     predicate: (Char) -> Boolean
): Char  
+
): Char?
inline fun <T> Iterable<T>.single(
+
inline fun <T> Iterable<T>.singleOrNull(
 
     predicate: (T) -> Boolean
 
     predicate: (T) -> Boolean
): T  
+
): T?
  
</syntaxhighlight>في حال استدعاء الدالة <code>singleOrNull()‎</code> عبر <nowiki/>[[Kotlin/collections|مجموعة]] دون تمرير أي معامل (parameter) فستعيد العنصر الوحيد الموجود في تلك <nowiki/>[[Kotlin/collections|المجموعة]]. وفي حال كانت تلك [[Kotlin/collections|المجموعة]] فارغة أو تحتوي أكثر من عنصر واحد فستطلق الدالة <code>singleOrNull()‎</code>[[Kotlin/exceptions|استثناءً]]:<syntaxhighlight lang="kotlin">
+
</syntaxhighlight>في حال استدعاء الدالة <code>singleOrNull()‎</code> عبر <nowiki/>[[Kotlin/collections|مجموعة]] دون تمرير أي معامل (parameter) فستعيد العنصر الوحيد الموجود في تلك <nowiki/>[[Kotlin/collections|المجموعة]]. وفي حال كانت تلك [[Kotlin/collections|المجموعة]] فارغة أو تحتوي أكثر من عنصر واحد فستعيد القيمة المعدومة <code>null</code>:<syntaxhighlight lang="kotlin">
fun <T> Iterable<T>.single(): T  
+
fun <T> Iterable<T>.singleOrNull(): T?
  
</syntaxhighlight>في حال استدعاء الدالة <code>singleOrNull()‎</code> عبر  [[Kotlin/List|لائحة]] دون تمرير أي معامل (parameter) فستعيد العنصر الوحيد الموجود في تلك <nowiki/>[[Kotlin/List|اللائحة]]. وفي حال كانت تلك [[Kotlin/List|اللائحة]] فارغة أو تحتوي أكثر من عنصر واحد فستطلق الدالة <code>singleOrNull()‎</code>[[Kotlin/exceptions|استثناءً]]:<syntaxhighlight lang="kotlin">
+
</syntaxhighlight>في حال استدعاء الدالة <code>singleOrNull()‎</code> عبر  [[Kotlin/List|لائحة]] دون تمرير أي معامل (parameter) فستعيد العنصر الوحيد الموجود في تلك <nowiki/>[[Kotlin/List|اللائحة]]. وفي حال كانت تلك [[Kotlin/List|اللائحة]] فارغة أو تحتوي أكثر من عنصر واحد فستعيد القيمة المعدومة <code>null</code>:<syntaxhighlight lang="kotlin">
fun <T> List<T>.single(): T  
+
fun <T> List<T>.singleOrNull(): T?
  
 
</syntaxhighlight>
 
</syntaxhighlight>
 
==القيم المٌعادة==
 
==القيم المٌعادة==
العنصر الوحيد الموجود في [[Kotlin/Array|المصفوفة]] أو <nowiki/>[[Kotlin/collections|المجموعة]] أو [[Kotlin/List|اللائحة]] التي استُدعيت عبرها، وفي حال تمرير شرط منطقي <code>predicate</code> كمعامل (parameter) فستعيد العنصر الوحيد الذي يحقق ذلك الشرط المنطقي. أما في حال كانت تلك [[Kotlin/Array|المصفوفة]] تحتوي أكثر من عنصر واحد (يحقق <code>predicate</code>  في حال تمريرها) أو لا تحتوي أي واحد (يحقق <code>predicate</code>  في حال تمريرها) فستطلق الدالة <code>single()‎</code>[[Kotlin/exceptions|استثناءً]].
+
العنصر الوحيد الموجود في [[Kotlin/Array|المصفوفة]] أو <nowiki/>[[Kotlin/collections|المجموعة]] أو [[Kotlin/List|اللائحة]] التي استُدعيت عبرها، وفي حال تمرير شرط منطقي <code>predicate</code> كمعامل (parameter) فستعيد العنصر الوحيد الذي يحقق ذلك الشرط المنطقي. أما في حال كانت تلك [[Kotlin/Array|المصفوفة]] تحتوي أكثر من عنصر واحد (يحقق <code>predicate</code>  في حال تمريرها) أو لا تحتوي أي واحد (يحقق <code>predicate</code>  في حال تمريرها) فستعيد القيمة المعدومة <code>null</code>:
 
==أمثلة==
 
==أمثلة==
 
===استخدام الدالة <code>()singleOrNull</code> مع المصفوفات===
 
===استخدام الدالة <code>()singleOrNull</code> مع المصفوفات===
سطر 57: سطر 59:
 
var array = arrayOf(0)
 
var array = arrayOf(0)
  
print(array.single()) // 0
+
print(array.singleOrNull()) // 0
 
}
 
}
 
</syntaxhighlight>
 
</syntaxhighlight>
===استخدام الدالة <code>()singleOrNull</code> مع المصفوفات===
+
===استخدام الدالة <code>()singleOrNull</code> مع المصفوفات: الحالة الثانية===
تعرف الشيفرة الآتية  لائحة باسم <code>array</code> مكونة من عنصرين باستخدام الدالة <code>()arrayOf‎</code>، ثم تستخدم الدالة  <code>()singleOrNull</code>  على <code>array</code>،ولمّا كانت <code>array</code> تحتوي أكثر من عنصر واحد، فستطلق [[Kotlin/exceptions|استثناءً]]:<syntaxhighlight lang="kotlin">
+
تعرف الشيفرة الآتية  لائحة باسم <code>array</code> مكونة من عنصرين باستخدام الدالة <code>()arrayOf‎</code>، ثم تستخدم الدالة  <code>()singleOrNull</code>  على <code>array</code>،ولمّا كانت <code>array</code> تحتوي أكثر من عنصر واحد، فستعيد القيمة المعدومة <code>null</code>:<syntaxhighlight lang="kotlin">
 
fun main(args: Array<String>) {
 
fun main(args: Array<String>) {
 
var array = arrayOf(0, 6)
 
var array = arrayOf(0, 6)
  
print(array.single()) // إطلاق استثناء
+
print(array.single()) // null
 
}
 
}
 
</syntaxhighlight>
 
</syntaxhighlight>
 
==أنظر أيضًا==
 
==أنظر أيضًا==
*<code>[[Kotlin/collections/singleOrNull|singleOrNull()]]</code>‎: تعيد العنصر الوحيد الموجود في [[Kotlin/Array|المصفوفة]] أو <nowiki/>[[Kotlin/collections|المجموعة]] أو [[Kotlin/List|اللائحة]] التي استُدعيت عبرها، وفي حال تمرير شرط منطقي <code>predicate</code> كمعامل (parameter) فستعيد العنصر الوحيد الذي يحقق ذلك الشرط المنطقي. وفي حال كان الكائن الذي استُدعيت عبره يحتوي أكثر من عنصر واحد (يحقق <code>predicate</code> في حال تمريرها) أو لا يحتوي أي واحد (يحقق <code>predicate</code> في حال تمريرها) فستعيد الدالة  <code>single()‎</code> القيمة <code>null</code>.
+
*<code>[[Kotlin/collections/single|single()]]</code>‎: تعيد العنصر الوحيد الموجود في <nowiki/>[[Kotlin/Array|المصفوفة]] أو <nowiki/>[[Kotlin/collections|المجموعة]] أو <nowiki/>[[Kotlin/List|اللائحة]] التي استُدعيت عبرها، وفي حال تمرير شرط منطقي <code>predicate</code>كمعامل (parameter) فستعيد العنصر الوحيد الذي يحقق ذلك الشرط المنطقي. أمّا في حال كانت الكائن الذي استُدعيت عبره يحتوي أكثر من عنصر واحد (يحقق <code>predicate</code> في حال تمريرها) أو لا يحتوي أي واحد (يحقق <code>predicate</code> في حال تمريرها) فستطلق الدالة  <code>single()‎</code>[[Kotlin/exceptions|استثناءً]].
 
==مصادر==
 
==مصادر==
*[https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/single.html الدالة  singleOrNull()‎ في التوثيق الرسميّ للمكتبة القياسيّة في لغة Kotlin.]
+
*[https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/single-or-null.html الدالة  singleOrNull()‎ في التوثيق الرسميّ للمكتبة القياسيّة في لغة Kotlin.]
 
[[تصنيف:Kotlin]]
 
[[تصنيف:Kotlin]]
 
[[تصنيف:Kotlin Functions]]
 
[[تصنيف:Kotlin Functions]]

مراجعة 11:18، 4 يونيو 2018

تعيد الدالةsingleOrNull()‎العنصر الوحيد الموجود في المصفوفة أو المجموعة أو اللائحة التي استُدعيت عبرها، وفي حال تمرير شرط منطقي predicate كمعامل (parameter) فستعيد العنصر الوحيد الذي يحقق ذلك الشرط المنطقي. أمّا في حال كان الكائن الذي استُدعيت عبره يحتوي أكثر من عنصر واحد (يحقق predicate في حال تمريرها) أو لا يحتوي أي واحد (يحقق predicate في حال تمريرها) فستعيد القيمة المعدومة null.

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

في حال استدعاء الدالة singleOrNull()‎ عبر مصفوفة دون تمرير أي معامل (parameter) فستعيد العنصر الوحيد الموجود في تلك المصفوفة. وفي حال كانت تلك المصفوفة فارغة أو تحتوي أكثر من عنصر واحد فستعيد القيمة المعدومة null:

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

في حال استدعاء الدالة singleOrNull()‎ عبر مصفوفة مع تمرير شرط منطقي predicate كمعامل (parameter) فستعيد العنصر الوحيد الذي يحقق ذلك الشرط المنطقي في تلك المصفوفة. وفي حال كانت تلك المصفوفة تحتوي أكثر من عنصر واحد يحقق ذلك الشرط المنطقي أو لا تحتوي أي واحد فستعيد القيمة المعدومة null:

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

في حال استدعاء الدالة singleOrNull()‎ عبر مجموعة دون تمرير أي معامل (parameter) فستعيد العنصر الوحيد الموجود في تلك المجموعة. وفي حال كانت تلك المجموعة فارغة أو تحتوي أكثر من عنصر واحد فستعيد القيمة المعدومة null:

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

في حال استدعاء الدالة singleOrNull()‎ عبر  لائحة دون تمرير أي معامل (parameter) فستعيد العنصر الوحيد الموجود في تلك اللائحة. وفي حال كانت تلك اللائحة فارغة أو تحتوي أكثر من عنصر واحد فستعيد القيمة المعدومة null:

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

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

العنصر الوحيد الموجود في المصفوفة أو المجموعة أو اللائحة التي استُدعيت عبرها، وفي حال تمرير شرط منطقي predicate كمعامل (parameter) فستعيد العنصر الوحيد الذي يحقق ذلك الشرط المنطقي. أما في حال كانت تلك المصفوفة تحتوي أكثر من عنصر واحد (يحقق predicate في حال تمريرها) أو لا تحتوي أي واحد (يحقق predicate في حال تمريرها) فستعيد القيمة المعدومة null:

أمثلة

استخدام الدالة ()singleOrNull مع المصفوفات

تعرف الشيفرة الآتية  لائحة باسم array مكونة من عنصر واحد باستخدام الدالة ()arrayOf‎، ثم تستخدم الدالة  ()singleOrNull  على arrayوتطبع الناتج:

fun main(args: Array<String>) {
var array = arrayOf(0)

print(array.singleOrNull()) // 0
}

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

تعرف الشيفرة الآتية  لائحة باسم array مكونة من عنصرين باستخدام الدالة ()arrayOf‎، ثم تستخدم الدالة  ()singleOrNull  على array،ولمّا كانت array تحتوي أكثر من عنصر واحد، فستعيد القيمة المعدومة null:

fun main(args: Array<String>) {
var array = arrayOf(0, 6)

print(array.single()) // null
}

أنظر أيضًا

  • single()‎: تعيد العنصر الوحيد الموجود في المصفوفة أو المجموعة أو اللائحة التي استُدعيت عبرها، وفي حال تمرير شرط منطقي predicateكمعامل (parameter) فستعيد العنصر الوحيد الذي يحقق ذلك الشرط المنطقي. أمّا في حال كانت الكائن الذي استُدعيت عبره يحتوي أكثر من عنصر واحد (يحقق predicate في حال تمريرها) أو لا يحتوي أي واحد (يحقق predicate في حال تمريرها) فستطلق الدالة  single()‎استثناءً.

مصادر