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

من موسوعة حسوب
اذهب إلى التنقل اذهب إلى البحث
(أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE: الدالة all()‎ في لغة Kotlin}}</noinclude> تُعيد الدالة all()‎ القيمة true إن كانت كل عناصر ال...')
 
ط
 
(10 مراجعات متوسطة بواسطة 3 مستخدمين غير معروضة)
سطر 1: سطر 1:
<noinclude>{{DISPLAYTITLE: الدالة all()‎ في لغة Kotlin}}</noinclude>
+
<noinclude>{{DISPLAYTITLE: الدالة <code>‎‎all()‎</code> في Kotlin}}</noinclude>
 
+
تتحقق الدالة <code>all()‎</code> إن كانت كافّة عناصر المصفوفة أو المجموعة (collection) التي استُدعيت عبرها تطابق شرطًا منطقيًّا محدَّدًا.
تُعيد الدالة all()‎ القيمة true إن كانت كل عناصر المصفوفة أو المُكرّر (Iterable) الذي استُدعيت عبره تحقق العبارة المنطقية (predicate) المحددة، أو false خلاف ذلك.
 
  
 
== البنية العامة ==
 
== البنية العامة ==
يمكن استدعاء الدالة all()‎ من لمصفوفات الأنواع المختلفة كما يلي:
+
يمكن استدعاء الدالة <code>all()‎</code> للمصفوفات من الأنواع المختلفة كما يلي:<syntaxhighlight lang="kotlin">
 
+
inline fun <T> Array<out T>.all(predicate: (T) -> Boolean): Boolean
val <T> Array<out T>.lastIndex: IntRange
+
inline fun ByteArray.all(predicate: (Byte) -> Boolean): Boolean
 
+
inline fun ShortArray.all(predicate: (Short) -> Boolean): Boolean
val ByteArray.lastIndex: IntRange
+
inline fun IntArray.all(predicate: (Int) -> Boolean): Boolean
 
+
inline fun LongArray.all(predicate: (Long) -> Boolean): Boolean
val ShortArray.lastIndex: IntRange
+
inline fun FloatArray.all(predicate: (Float) -> Boolean): Boolean
 
+
inline fun DoubleArray.all(predicate: (Double) -> Boolean): Boolean
val IntArray.lastIndex: IntRange
+
inline fun BooleanArray.all(predicate: (Boolean) -> Boolean): Boolean
 
+
inline fun CharArray.all(predicate: (Char) -> Boolean): Boolean
val LongArray.lastIndex: IntRange
+
</syntaxhighlight>وكذلك للعناصر القابلة للتكرار (Iterables):<syntaxhighlight lang="kotlin">
 
+
inline fun <T> Iterable<T>.all(predicate: (T) -> Boolean): Boolean
val FloatArray.lastIndex: IntRange
+
</syntaxhighlight>وكذلك لعناصر [[Kotlin/collections/Map|الخرائط]] (maps):<syntaxhighlight lang="kotlin">
 
+
inline fun <K, V> Map<out K, V>.all( predicate: (Entry<K, V>) -> Boolean): Boolean
val DoubleArray.lastIndex: IntRange
+
</syntaxhighlight>ويُلاحَظ وجود الكلمة المفتاحية <code>inline</code> للدلالة على أن هذه الدالة مباشرة، وللمزيد من التفاصيل راجع [[Kotlin/inline functions|توثيق الدوال المباشرة (inline functions)]].
 
 
val BooleanArray.lastIndex: IntRange
 
 
 
val CharArray.lastIndex: IntRange
 
 
 
وكذلك من المكرّرات (Iterable):
 
 
 
val <T> List<T>.lastIndex: Int
 
 
 
وكذلك على القوميس (Maps):
 
  
inline fun <K, V> Map<out K, V>.all( predicate: (Entry<K, V>) -> Boolean): Boolean
+
== المعاملات ==
  
يُلاحَظ وجود الكلمة المفتاحية inline للدلالة على أن هذه الدالة مباشرة، وللمزيد من التفاصيل راجع [[Kotlin/inline functions|توثيق الدوال المباشرة (inline functions)]].
+
=== <code>predicate</code> ===
 +
دالة تطبق على كل عنصر من عناصر المصفوفة أو الكائن <code>iterable</code> المعطى أو على كل زوج من أزواج الخريطة المعطاة، وتعيد القيمة المنطقية المقابلة لذلك العنصر أو الزوج.
  
 
== القيم المعادة ==
 
== القيم المعادة ==
true إن كانت كل عناصر المصفوفة أو المُكرّر (Iterable) الذي استُدعيت عبره تحقق العبارة المنطقية (predicate) المحددة، أو false خلاف ذلك.
+
تُعاد القيمة <code>true</code> إن كانت كافّة عناصر المصفوفة أو العناصر القابلة للتكرار (Iterable) التي استُدعيت معها تحقق العبارة المنطقية (predicate) المُحدَّدة، أو <code>false</code> بخلاف ذلك.
  
 
== أمثلة ==
 
== أمثلة ==
 +
'''استخدام الدالة <code>()all</code> مع المجالات (Ranges):'''
  
=== استخدام الدالة all على المجالات ===
+
تعرِّف الشيفرة الآتية دالةً ([[Kotlin/lambdas|بصيغة lambda]]) باسم <code>isEven()‎</code> ، تعيد هذه الدالة القيمة <code>true</code> إن كان معاملها (والمتمثل [[Kotlin/lambdas#it: .D8.A7.D9.84.D8.A7.D8.B3.D9.85 .D8.A7.D9.84.D8.B6.D9.85.D9.86.D9.8A .28implicit name.29 .D9.84.D9.84.D9.85.D8.AA.D8.AD.D9.88.D9.84 .D8.A7.D9.84.D9.88.D8.AD.D9.8A.D8.AF|بالاسم الضمني it]]) زوجيًا أو القيمة<code>false</code> إن كان فرديًا (يكون باقي القسمة على 2 مساويًا للصفر في العدد الزوجي)، كما وتعرِّف الشيفرة مجالًا (range) باسم  <code>zeroToTen</code> يبدأ بالقيمة <code>1</code> وينتهي بالقيمة <code>10</code>، ثم تُستخدَم الدالة <code>all()‎</code> للتحقق من أنّ كل عناصر المجال <code>zeroToTen</code> زوجيّة إذ إنّ الدالة <code>isEven</code> هي العبارة المنطقية (predicate) التي يجب أن تحققها جميع عناصر المجال، وستكون النتيجة <code>false</code> لوجود أعداد فردية في ذلك المجال:<syntaxhighlight lang="kotlin">
تعرف الشيفرة الآتية دالة isEven()‎ تعيد القيمة true إن كان معاملها زوجيا أو تعيد false خلاف ذلك، وأيضًا تعرّف مجالا (range) باسم  zeroToTen يبدأ من واحد وينتهي ب 10، ثم تستخدم الدالة all()‎  للتحقق من أنّ كانت كل عناصر المجال zeroToTen  زوجية، ثم تعرف evens والذي هو حاصل ضرب عناصر المجال في 2 باستخدام الدالة map()‎ ونستخدم الدالة all()‎ للتحقق من أنّ كل عناصر المجال evens زوجيةة:
 
 
 
 
fun main(args: Array<String>) {
 
fun main(args: Array<String>) {
 
+
    val isEven: (Int) -> Boolean = { it % 2 == 0 } // تعريف دالة
val isEven: (Int) -> Boolean = { it % 2 == 0 }  // تعريف دالة
+
    val zeroToTen = 0..10 // تعريف مجال
 
+
    println(zeroToTen.all(isEven)) // false
val zeroToTen = 0..10  // تعريف مجال
 
 
 
println(zeroToTen.all(isEven)) // false
 
 
 
val evens = zeroToTen.map { it * 2 }  // ضرب عناصر المجال في 2
 
 
 
println(evens.all(isEven)) // true
 
 
 
 
}
 
}
 +
</syntaxhighlight>وللحصول على القيمة المنطقية <code>true</code> سنلجأ لضرب كل عناصر المجال بالعدد 2 وذلك بالاعتماد على map وتخزين القيم الناتجة في المتغيّر <code>evens</code> كما في الشيفرة:<syntaxhighlight lang="kotlin">
 +
    val evens = zeroToTen.map { it * 2 } // ضرب عناصر المجال بالعدد 2
 +
    println(evens.all(isEven)) // true
  
=== استخدام الدالة all على لائحة فارغة ===
+
</syntaxhighlight>'''استخدام الدالة <code>()all</code> مع مصفوفة فارغة (Empty Array):'''
تعرف الشيفرة الآتية لائحة فارغة وتتحقق بواسطة الدالة all()‎ من أن كل عناصرها زوجية، والنتيجة هي true، لأنها فارغة:
 
 
 
fun main(args: Array<String>) {
 
 
 
val evens = zeroToTen.map { it * 2 }  // ضرب عناصر المجال في 2
 
 
 
println(evens.all(isEven)) // true
 
  
 +
تعرِّف الشيفرة الآتية دالةً ([[Kotlin/lambdas|بصيغة lambda]]) باسم <code>isEven()‎</code> ، تعيد هذه الدالة القيمة <code>true</code> إن كان معاملها (والمتمثل [[Kotlin/lambdas#it: .D8.A7.D9.84.D8.A7.D8.B3.D9.85 .D8.A7.D9.84.D8.B6.D9.85.D9.86.D9.8A .28implicit name.29 .D9.84.D9.84.D9.85.D8.AA.D8.AD.D9.88.D9.84 .D8.A7.D9.84.D9.88.D8.AD.D9.8A.D8.AF|بالاسم الضمني it]]) زوجيًا أو القيمة<code>false</code> إن كان فرديًا (يكون باقي القسمة على 2 مساويًا للصفر في العدد الزوجي)، كما وتعرِّف مصفوفةً فارغةً وتتحقق بواسطة الدالة <code>all()‎</code> من أن كافّة عناصرها زوجية، وستكون النتيجة <code>true</code> لأنها فارغة:<syntaxhighlight lang="kotlin">
 +
fun main(args: Array<String>) {
 +
    val isEven: (Int) -> Boolean = { it % 2 == 0 } // تعريف دالة
 +
    val evens = emptyArray<Int>()
 +
    println(evens.all(isEven)) // true
 
}
 
}
 +
</syntaxhighlight>
  
 
== انظر أيضًا ==
 
== انظر أيضًا ==
* any()‎: تُعيد true إن كان عنصر واحد على الأقل من المصفوفة يحقق العبارة المنطقية (predicate) المحددة، أو false خلاف ذلك.
+
* الدالة <code>[[Kotlin/collections/any|any()]]</code>‎: للتأكد من أن عنصرًا واحدًا على الأقل من المصفوفة يحقّق العبارة المنطقية (predicate) المُحدَّدة.
  
 
== مصادر ==
 
== مصادر ==
* الخاصيّة  any()‎ في التوثيق الرسميّ للمكتبة القياسيّة في لغة Kotlin.
+
* [https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/all.html صفحة الدالة all()‎ في التوثيق الرسميّ للمكتبة القياسيّة في لغة Kotlin.]
 
[[تصنيف:Kotlin]]
 
[[تصنيف:Kotlin]]
[[تصنيف:Kotlin Functions]]
+
[[تصنيف:Kotlin Function]]
 +
[[تصنيف:Kotlin Collection]]

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

تتحقق الدالة all()‎ إن كانت كافّة عناصر المصفوفة أو المجموعة (collection) التي استُدعيت عبرها تطابق شرطًا منطقيًّا محدَّدًا.

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

يمكن استدعاء الدالة all()‎ للمصفوفات من الأنواع المختلفة كما يلي:

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

وكذلك للعناصر القابلة للتكرار (Iterables):

inline fun <T> Iterable<T>.all(predicate: (T) -> Boolean): Boolean

وكذلك لعناصر الخرائط (maps):

inline fun <K, V> Map<out K, V>.all( predicate: (Entry<K, V>) -> Boolean): Boolean

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

المعاملات

predicate

دالة تطبق على كل عنصر من عناصر المصفوفة أو الكائن iterable المعطى أو على كل زوج من أزواج الخريطة المعطاة، وتعيد القيمة المنطقية المقابلة لذلك العنصر أو الزوج.

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

تُعاد القيمة true إن كانت كافّة عناصر المصفوفة أو العناصر القابلة للتكرار (Iterable) التي استُدعيت معها تحقق العبارة المنطقية (predicate) المُحدَّدة، أو false بخلاف ذلك.

أمثلة

استخدام الدالة ()all مع المجالات (Ranges):

تعرِّف الشيفرة الآتية دالةً (بصيغة lambda) باسم isEven()‎ ، تعيد هذه الدالة القيمة true إن كان معاملها (والمتمثل بالاسم الضمني it) زوجيًا أو القيمةfalse إن كان فرديًا (يكون باقي القسمة على 2 مساويًا للصفر في العدد الزوجي)، كما وتعرِّف الشيفرة مجالًا (range) باسم  zeroToTen يبدأ بالقيمة 1 وينتهي بالقيمة 10، ثم تُستخدَم الدالة all()‎ للتحقق من أنّ كل عناصر المجال zeroToTen زوجيّة إذ إنّ الدالة isEven هي العبارة المنطقية (predicate) التي يجب أن تحققها جميع عناصر المجال، وستكون النتيجة false لوجود أعداد فردية في ذلك المجال:

fun main(args: Array<String>) {
    val isEven: (Int) -> Boolean = { it % 2 == 0 } // تعريف دالة
    val zeroToTen = 0..10 // تعريف مجال
    println(zeroToTen.all(isEven)) // false
}

وللحصول على القيمة المنطقية true سنلجأ لضرب كل عناصر المجال بالعدد 2 وذلك بالاعتماد على map وتخزين القيم الناتجة في المتغيّر evens كما في الشيفرة:

    val evens = zeroToTen.map { it * 2 } // ضرب عناصر المجال بالعدد 2
    println(evens.all(isEven)) // true

استخدام الدالة ()all مع مصفوفة فارغة (Empty Array): تعرِّف الشيفرة الآتية دالةً (بصيغة lambda) باسم isEven()‎ ، تعيد هذه الدالة القيمة true إن كان معاملها (والمتمثل بالاسم الضمني it) زوجيًا أو القيمةfalse إن كان فرديًا (يكون باقي القسمة على 2 مساويًا للصفر في العدد الزوجي)، كما وتعرِّف مصفوفةً فارغةً وتتحقق بواسطة الدالة all()‎ من أن كافّة عناصرها زوجية، وستكون النتيجة true لأنها فارغة:

fun main(args: Array<String>) { 
    val isEven: (Int) -> Boolean = { it % 2 == 0 } // تعريف دالة
    val evens = emptyArray<Int>()
    println(evens.all(isEven)) // true
}

انظر أيضًا

  • الدالة any()‎: للتأكد من أن عنصرًا واحدًا على الأقل من المصفوفة يحقّق العبارة المنطقية (predicate) المُحدَّدة.

مصادر