الفرق بين المراجعتين لصفحة: «Kotlin/collections/all»
لا ملخص تعديل |
مراجعة |
||
| سطر 1: | سطر 1: | ||
<noinclude>{{DISPLAYTITLE: الدالة all() في لغة Kotlin}}</noinclude> | <noinclude>{{DISPLAYTITLE: الدالة all() في لغة Kotlin}}</noinclude> | ||
تُعيد الدالة <code>all()</code> القيمة <code>true</code> إن كانت | تُعيد الدالة <code>all()</code> القيمة <code>true</code> إن كانت كافّة عناصر المصفوفة أو المجموعة (collection) التي استُدعيت عبرها تحقق العبارة المنطقية (predicate) المُحدَّدة، أو تعيد القيمة <code>false</code> بخلاف ذلك. | ||
== البنية العامة == | == البنية العامة == | ||
يمكن استدعاء الدالة <code>all()</code> من | يمكن استدعاء الدالة <code>all()</code> للمصفوفات من الأنواع المختلفة كما يلي:<syntaxhighlight lang="kotlin"> | ||
inline fun <T> Array<out T>.all(predicate: (T) -> Boolean): Boolean | inline fun <T> Array<out T>.all(predicate: (T) -> Boolean): Boolean | ||
inline fun ByteArray.all(predicate: (Byte) -> Boolean): Boolean | inline fun ByteArray.all(predicate: (Byte) -> Boolean): Boolean | ||
| سطر 14: | سطر 14: | ||
inline fun BooleanArray.all(predicate: (Boolean) -> Boolean): Boolean | inline fun BooleanArray.all(predicate: (Boolean) -> Boolean): Boolean | ||
inline fun CharArray.all(predicate: (Char) -> Boolean): Boolean | inline fun CharArray.all(predicate: (Char) -> Boolean): Boolean | ||
</syntaxhighlight>وكذلك | </syntaxhighlight>وكذلك للعناصر القابلة للتكرار (Iterables):<syntaxhighlight lang="kotlin"> | ||
inline fun <T> Iterable<T>.all(predicate: (T) -> Boolean): Boolean | inline fun <T> Iterable<T>.all(predicate: (T) -> Boolean): Boolean | ||
</syntaxhighlight>وكذلك | </syntaxhighlight>وكذلك لعناصر Maps:<syntaxhighlight lang="kotlin"> | ||
inline fun <K, V> Map<out K, V>.all( predicate: (Entry<K, V>) -> Boolean): Boolean | inline fun <K, V> Map<out K, V>.all( predicate: (Entry<K, V>) -> Boolean): Boolean | ||
</syntaxhighlight> | </syntaxhighlight>ويُلاحَظ وجود الكلمة المفتاحية <code>inline</code> للدلالة على أن هذه الدالة مباشرة، وللمزيد من التفاصيل راجع [[Kotlin/inline functions|توثيق الدوال المباشرة (inline functions)]]. | ||
== القيم المعادة == | == القيم المعادة == | ||
<code>true</code> إن كانت | القيمة <code>true</code> إن كانت كافّة عناصر المصفوفة أو العناصر القابلة للتكرار (Iterable) الذي استُدعيت عبرها تحقق العبارة المنطقية (predicate) المُحدَّدة، أو <code>false</code> بخلاف ذلك. | ||
== أمثلة == | == أمثلة == | ||
=== استخدام الدالة <code>()all</code> | === استخدام الدالة <code>()all</code> مع المجالات (Ranges) === | ||
تعرِّف الشيفرة الآتية دالةً ([[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"> | |||
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 | val zeroToTen = 0..10 // تعريف مجال | ||
println(zeroToTen.all(isEven)) // false | println(zeroToTen.all(isEven)) // false | ||
} | |||
</syntaxhighlight>وللحصول على القيمة المنطقية <code>true</code> سنلجأ لضرب كل عناصر المجال بالعدد 2 وذلك بالاعتماد على map وتخزين القيم الناتجة في المتغيّر <code>evens</code> كما في الشيفرة:<syntaxhighlight lang="kotlin"> | |||
val evens = zeroToTen.map { it * 2 } // ضرب عناصر المجال بالعدد 2 | |||
println(evens.all(isEven)) // true | |||
</syntaxhighlight> | </syntaxhighlight> | ||
=== استخدام الدالة <code>()all</code> | === استخدام الدالة <code>()all</code> مع مصفوفة فارغة (Empty Array) === | ||
تعرِّف الشيفرة الآتية دالةً ([[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>) { | fun main(args: Array<String>) { | ||
val | val isEven: (Int) -> Boolean = { it % 2 == 0 } // تعريف دالة | ||
println(evens.all(isEven)) // true | val evens = emptyArray<Int>() | ||
println(evens.all(isEven)) // true | |||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
== انظر أيضًا == | == انظر أيضًا == | ||
* <code>[[Kotlin/collections/any|any()]]</code>: | * الدالة <code>[[Kotlin/collections/any|any()]]</code>: للتأكد من أن عنصرًا واحدًا على الأقل من المصفوفة يحقّق العبارة المنطقية (predicate) المُحدَّدة. | ||
== مصادر == | == مصادر == | ||
* [https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/all.html | * [https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/all.html صفحة الدالة all() في التوثيق الرسميّ للمكتبة القياسيّة في لغة Kotlin.] | ||
[[تصنيف:Kotlin]] | [[تصنيف:Kotlin]] | ||
[[تصنيف:Kotlin | [[تصنيف:Kotlin Function]] | ||
مراجعة 05:04، 30 مايو 2018
تُعيد الدالة all() القيمة true إن كانت كافّة عناصر المصفوفة أو المجموعة (collection) التي استُدعيت عبرها تحقق العبارة المنطقية (predicate) المُحدَّدة، أو تعيد القيمة false بخلاف ذلك.
البنية العامة
يمكن استدعاء الدالة 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).
القيم المعادة
القيمة 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) المُحدَّدة.