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

من موسوعة حسوب
اذهب إلى التنقل اذهب إلى البحث
(أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE: الدالة <code>requireNoNulls()‎</code> في لغة Kotlin}}</noinclude> تُراكِم الدالة<code>requireNoNulls()‎</code> ا...')
 
سطر 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> [[Kotlin/Array|مصفوفة]] أو [[Kotlin/collections|مجموعة]] أو [[Kotlin/List|لائحة]] تضم جميع العناصر غير المعدومة (non-<code>null</code>) في [[Kotlin/Array|المصفوفة]] أو [[Kotlin/collections|المجموعة]] أو [[Kotlin/List|اللائحة]] التي استُدعيت عبرها. في حال كان هناك عنصر معدوم (<code>null</code>) فستطلق  الدالةُ<code>requireNoNulls()‎</code> الاستثناء <code>IllegalArgumentException</code>.  
 
==البنية العامة==
 
==البنية العامة==
 
<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
+
[[Kotlin/Array|مصفوفة]] أو [[Kotlin/collections|مجموعة]]  أو [[Kotlin/List|لائحة]] تضم جميع العناصر غير المعدومة (non-<code>null</code>) في  [[Kotlin/Array|المصفوفة]] أو [[Kotlin/collections|المجموعة]] أو [[Kotlin/List|اللائحة]] التي استُدعيت عبرها.  
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(
 
    operation: (index: Int, acc: S, T) -> S
 
): S
 
</syntaxhighlight>تُراكِم الدالة<code>reduceIndexed()‎</code> القيم بدءًا من العنصر الأول وتطبّق العملية <code>operation</code> من اليسار إلى اليمين على القيمة المُتراكمة الراهنة وعلى العنصر الموالي في [[Kotlin/collections|المجموعة]] التي استُدعيت عبرها وعلى فهرسه. ثم تُعيد القيمة النهائية.
 
  
يُلاحَظ وجود الكلمة المفتاحية <code>inline</code> للدلالة على أن هذه الدالة مباشرة، وللمزيد من التفاصيل راجع <nowiki/>[[Kotlin/inline functions|توثيق الدوال المباشرة (inline functions)]].
+
== أمثلة ==
  
==القيم المٌعادة==
 
قيمة التطبيق التراكُمي من اليسار إلى اليمين للعملية <code>operation</code> على عناصر [[Kotlin/Array|المصفوفة]] أو [[Kotlin/collections|المجموعة]] التي استُدعيت عبرها وعلى فهارسها.
 
==أمثلة==
 
 
===استخدام الدالة <code>()requireNoNulls</code> مع المصفوفات===
 
===استخدام الدالة <code>()requireNoNulls</code> مع المصفوفات===
تعرف الشيفرة الآتية <nowiki/>[[Kotlin/Array|مصفوفة]] باسم <code>array</code> مكونة من ستة أعداد باستخدام الدالة <code>()arrayOf</code>، ثم تستخدم الدالة <code>()requireNoNulls</code> على <code>array</code> بتمرير  دال، ثم تطبع الناتج:<syntaxhighlight lang="kotlin">
+
تعرف الشيفرة الآتية <nowiki/>[[Kotlin/List|لائحة]]<nowiki/> باسم <code>list</code> مكونة من ستة أعداد باستخدام الدالة <code>()List<Int?>‎</code>، ثم تستخدم الدالة <code>()requireNoNulls</code> على <code>list</code>، ثم تطبع الناتج:<syntaxhighlight lang="kotlin">
 +
fun main(args: Array<String>) {
 +
var list = List<Int?>(6, { it } )
 +
   
 +
print(list.requireNoNulls()) // [0, 1, 2, 3, 4, 5]
 +
}
 +
</syntaxhighlight>
 +
===استخدام الدالة <code>()requireNoNulls</code> مع المصفوفات: الحالة الثانية===
 +
تعرف الشيفرة الآتية <nowiki/>[[Kotlin/List|لائحة]] باسم <code>list</code> مكونة من ستة أعداد باستخدام الدالة <code>()List<Int?>‎</code>، ثم تستخدم الدالة <code>()requireNoNulls</code> على <code>list</code>، ولما كانت<code>list</code> تضم عنصرًا يساوي <code>null</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<Int?>(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>
سطر 55: سطر 32:
  
 
==مصادر==
 
==مصادر==
*[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 Functions]]

مراجعة 18:10، 3 يونيو 2018

تُعيد الدالةrequireNoNulls()‎ مصفوفة أو مجموعة أو لائحة تضم جميع العناصر غير المعدومة (non-null) في المصفوفة أو المجموعة أو اللائحة التي استُدعيت عبرها. في حال كان هناك عنصر معدوم (null) فستطلق الدالةُrequireNoNulls()‎ الاستثناء IllegalArgumentException.

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

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

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

مصفوفة أو مجموعة أو لائحة تضم جميع العناصر غير المعدومة (non-null) في المصفوفة أو المجموعة أو اللائحة التي استُدعيت عبرها.

أمثلة

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

تعرف الشيفرة الآتية لائحة باسم list مكونة من ستة أعداد باستخدام الدالة ()List<Int?>‎، ثم تستخدم الدالة ()requireNoNulls على list، ثم تطبع الناتج:

fun main(args: Array<String>) {
var list = List<Int?>(6, { it } ) 
    
print(list.requireNoNulls()) // [0, 1, 2, 3, 4, 5]
}

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

تعرف الشيفرة الآتية لائحة باسم list مكونة من ستة أعداد باستخدام الدالة ()List<Int?>‎، ثم تستخدم الدالة ()requireNoNulls على list، ولما كانتlist تضم عنصرًا يساوي null فستطلق استثناءً، ثم تطبع الناتج:

fun main(args: Array<String>) {
var list = List<Int?>(6, { if (it < 5) it else null } ) // [0, 1, 2, 3, 4, null]
    
print(list.requireNoNulls()) // إطلاق استثناء
}

انظر أيضًا

  • reduce()‎: تُراكِم القيم بدءًا من العنصر الأول وتطبّق العملية operation من اليسار إلى اليمين على القيمة المُتراكمة الراهنة وعلى العنصر التالي وفهرسه.

مصادر