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

من موسوعة حسوب
أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE: الدالة <code>requireNoNulls()‎</code> في لغة Kotlin}}</noinclude> تُراكِم الدالة<code>requireNoNulls()‎</code> ا...'
 
طلا ملخص تعديل
 
(3 مراجعات متوسطة بواسطة 3 مستخدمين غير معروضة)
سطر 1: سطر 1:
<noinclude>{{DISPLAYTITLE: الدالة <code>requireNoNulls()‎</code> في لغة Kotlin}}</noinclude>
<noinclude>{{DISPLAYTITLE: الدالة <code>requireNoNulls()‎</code> في Kotlin}}</noinclude>
تُراكِم الدالة<code>requireNoNulls()‎</code> القيم بدءًا من العنصر الأول  في [[Kotlin/Array|المصفوفة]] أو [[Kotlin/collections|المجموعة]] التي استُدعيت عبرها وتطبّق العملية <code>operation</code> من اليسار إلى اليمين على القيمة المُتراكمة الراهنة وعلى العنصر الموالي في [[Kotlin/Array|المصفوفة]] أو [[Kotlin/collections|المجموعة]] التي استُدعيت عبرها وعلى فهرسه. ثم تُعيد القيمة النهائية.  
تعيد الدالة <code>requireNoNulls()‎</code> العناصر غير المعدومة (non-null) من [[Kotlin/Array|المصفوفة]] أو [[Kotlin/collections|المجموعة]] أو [[Kotlin/List|القائمة]] التي استُدعيت معها أو ترمي استثناءً إن وجد عنصر معدوم (null).  
==البنية العامة==
==البنية العامة==
<syntaxhighlight lang="kotlin">
<syntaxhighlight lang="kotlin">
inline fun <S, T : S> Array<out T>.reduceIndexed(
fun <T : Any> Array<T?>.requireNoNulls(): Array<T>  
    operation: (index: Int, acc: S, T) -> S
fun <T : Any> Iterable<T?>.requireNoNulls(): Iterable<T>  
): S
fun <T : Any> List<T?>.requireNoNulls(): List<T>  
inline fun ByteArray.reduceIndexed(
</syntaxhighlight>
    operation: (index: Int, acc: Byte, Byte) -> Byte
==القيم المعادة==
): Byte
تعاد المصفوفة أو المجموعة أو القائمة المعطاة نفسها إن لم يكن فيها أي عنصر معدوم أو يرمى الاستثناء <code>IllegalArgumentException</code> إن وجد أي عنصر معدوم.  
inline fun ShortArray.reduceIndexed(
    operation: (index: Int, acc: Short, Short) -> Short
): Short
inline fun IntArray.reduceIndexed(
    operation: (index: Int, acc: Int, Int) -> Int
): Int
inline fun LongArray.reduceIndexed(
    operation: (index: Int, acc: Long, Long) -> Long
): Long
inline fun FloatArray.reduceIndexed(
    operation: (index: Int, acc: Float, Float) -> Float
): Float
inline fun DoubleArray.reduceIndexed(
    operation: (index: Int, acc: Double, Double) -> Double
): Double
inline fun BooleanArray.reduceIndexed(
    operation: (index: Int, acc: Boolean, Boolean) -> Boolean
): Boolean
inline fun CharArray.reduceIndexed(
    operation: (index: Int, acc: Char, Char) -> Char
): Char


</syntaxhighlight>تُراكِم الدالة<code>reduceIndexed()‎</code> القيم بدءًا من العنصر الأول وتطبّق العملية <code>operation</code> من اليسار إلى اليمين على القيمة المُتراكمة الراهنة وعلى العنصر الموالي في [[Kotlin/Array|المصفوفة]] التي استُدعيت عبرها وعلى فهرسه. ثم تُعيد القيمة النهائية.<syntaxhighlight lang="kotlin">
== أمثلة ==
inline fun <S, T : S> Iterable<T>.reduceIndexed(
<nowiki/><nowiki/>استعمال الدالة <code>()requireNoNulls</code> مع قائمة لا تحتوي على أي عنصر معدوم:<syntaxhighlight lang="kotlin">
     operation: (index: Int, acc: S, T) -> S
fun main(args: Array<String>) {
): S
     var list = List<Int?>(6) { it }
</syntaxhighlight>تُراكِم الدالة<code>reduceIndexed()‎</code> القيم بدءًا من العنصر الأول وتطبّق العملية <code>operation</code> من اليسار إلى اليمين على القيمة المُتراكمة الراهنة وعلى العنصر الموالي في [[Kotlin/collections|المجموعة]] التي استُدعيت عبرها وعلى فهرسه. ثم تُعيد القيمة النهائية.


يُلاحَظ وجود الكلمة المفتاحية <code>inline</code> للدلالة على أن هذه الدالة مباشرة، وللمزيد من التفاصيل راجع <nowiki/>[[Kotlin/inline functions|توثيق الدوال المباشرة (inline functions)]].
    print(list.requireNoNulls()) // [0, 1, 2, 3, 4, 5]
 
}
==القيم المٌعادة==
</syntaxhighlight>
قيمة التطبيق التراكُمي من اليسار إلى اليمين للعملية <code>operation</code> على عناصر [[Kotlin/Array|المصفوفة]] أو [[Kotlin/collections|المجموعة]] التي استُدعيت عبرها وعلى فهارسها.
<nowiki/>استعمال الدالة <code>()requireNoNulls</code> مع قائمة تحتوي على عنصر معدوم:<syntaxhighlight lang="kotlin">
==أمثلة==
===استخدام الدالة <code>()requireNoNulls</code> مع المصفوفات===
تعرف الشيفرة الآتية <nowiki/>[[Kotlin/Array|مصفوفة]] باسم <code>array</code> مكونة من ستة أعداد باستخدام الدالة <code>()arrayOf</code>، ثم تستخدم الدالة <code>()requireNoNulls</code> على <code>array</code> بتمرير  دال، ثم تطبع الناتج:<syntaxhighlight lang="kotlin">
fun main(args: Array<String>) {
fun main(args: Array<String>) {
val array = arrayOf(1,2,3,4,5,6)
    var list = List(6) { if (it < 5) it else null } // [0, 1, 2, 3, 4, null]


val acc = array.reduceIndexed { acc , element , index -> acc + element*index }
    print(list.requireNoNulls())
print(acc) // 1439
}
}
</syntaxhighlight>نتيجة تنفيذ المثال السابق هي:<syntaxhighlight lang="text">
Exception in thread "main" java.lang.IllegalArgumentException: null element found in [0, 1, 2, 3, 4, null].
at kotlin.collections.CollectionsKt___CollectionsKt.requireNoNulls(_Collections.kt:1806)
at TestKt.main(test.kt:4)
</syntaxhighlight>
</syntaxhighlight>
==انظر أيضًا==
==انظر أيضًا==
* <code>[[Kotlin/collections/reduce|reduce()]]</code>‎: تُراكِم القيم بدءًا من العنصر الأول وتطبّق العملية <code>operation</code> من اليسار إلى اليمين على القيمة المُتراكمة الراهنة وعلى العنصر التالي وفهرسه.
* الدالة <code>[[Kotlin/collections/none|none()]]</code>‎: تتحقق إن كانت <nowiki/>[[Kotlin/Array|المصفوفة]] أو <nowiki/>[[Kotlin/collections|المجموعة]] أو الخريطة التي استدعيت معها فارغةً، أو إن لم يكن هنالك أي عنصر من تلك العناصر محقِّقًا لشرط معين.


==مصادر==
==مصادر==
*[https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/reduce-indexed.html الدالة  requireNoNulls()‎ في التوثيق الرسميّ للمكتبة القياسيّة في لغة Kotlin.]
*[https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/require-no-nulls.html صفحة الدالة requireNoNulls()‎ في التوثيق الرسميّ للمكتبة القياسيّة في لغة Kotlin.]
[[تصنيف:Kotlin]]
[[تصنيف:Kotlin]]
[[تصنيف:Kotlin Functions]]
[[تصنيف:Kotlin Function]]
[[تصنيف:Kotlin Collection]]

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

تعيد الدالة requireNoNulls()‎ العناصر غير المعدومة (non-null) من المصفوفة أو المجموعة أو القائمة التي استُدعيت معها أو ترمي استثناءً إن وجد عنصر معدوم (null).

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

fun <T : Any> Array<T?>.requireNoNulls(): Array<T> 
fun <T : Any> Iterable<T?>.requireNoNulls(): Iterable<T> 
fun <T : Any> List<T?>.requireNoNulls(): List<T>

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

تعاد المصفوفة أو المجموعة أو القائمة المعطاة نفسها إن لم يكن فيها أي عنصر معدوم أو يرمى الاستثناء IllegalArgumentException إن وجد أي عنصر معدوم.

أمثلة

استعمال الدالة ()requireNoNulls مع قائمة لا تحتوي على أي عنصر معدوم:

fun main(args: Array<String>) {
    var list = List<Int?>(6) { it }

    print(list.requireNoNulls()) // [0, 1, 2, 3, 4, 5]
}

استعمال الدالة ()requireNoNulls مع قائمة تحتوي على عنصر معدوم:

fun main(args: Array<String>) {
    var list = List(6) { if (it < 5) it else null } // [0, 1, 2, 3, 4, null]

    print(list.requireNoNulls())
}

نتيجة تنفيذ المثال السابق هي:

Exception in thread "main" java.lang.IllegalArgumentException: null element found in [0, 1, 2, 3, 4, null].
	at kotlin.collections.CollectionsKt___CollectionsKt.requireNoNulls(_Collections.kt:1806)
	at TestKt.main(test.kt:4)

انظر أيضًا

  • الدالة none()‎: تتحقق إن كانت المصفوفة أو المجموعة أو الخريطة التي استدعيت معها فارغةً، أو إن لم يكن هنالك أي عنصر من تلك العناصر محقِّقًا لشرط معين.

مصادر