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

من موسوعة حسوب
أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE: الدالة <code>slice()‎</code> في لغة Kotlin}}</noinclude> تعيد الدالة<code>slice()‎</code>العنصر الوحيد ا...'
 
طلا ملخص تعديل
 
(5 مراجعات متوسطة بواسطة 3 مستخدمين غير معروضة)
سطر 1: سطر 1:
<noinclude>{{DISPLAYTITLE: الدالة <code>slice()‎</code> في لغة Kotlin}}</noinclude>
<noinclude>{{DISPLAYTITLE: الدالة <code>slice()‎</code> في Kotlin}}</noinclude>
تعيد الدالة<code>slice()‎</code>العنصر الوحيد الموجود في [[Kotlin/Array|المصفوفة]] أو <nowiki/>[[Kotlin/collections|المجموعة]] أو [[Kotlin/List|اللائحة]] التي استُدعيت عبرها، وفي حال تمرير شرط منطقي <code>predicate</code> كمعامل (parameter) فستعيد العنصر الوحيد الذي يحقق ذلك الشرط المنطقي. أمّا في حال كان الكائن الذي استُدعيت عبره يحتوي أكثر من عنصر واحد (يحقق <code>predicate</code>  في حال تمريرها) أو لا يحتوي أي واحد (يحقق <code>predicate</code>  في حال تمريرها) فستعيد القيمة المعدومة <code>null</code>.
تقطع الدالة <code>slice()‎</code> جزءًا محدَّدًا من [[Kotlin/Array|المصفوفة]] أو [[Kotlin/List|القائمة]] التي استُدعيت معها ثمَّ تعيده في قائمة.  
 
==البنية العامة==
==البنية العامة==
في حال استدعاء الدالة <code>singleOrNull()‎</code> عبر <nowiki/>[[Kotlin/Array|مصفوفة]] دون تمرير أي معامل (parameter) فستعيد العنصر الوحيد الموجود في تلك <nowiki/>[[Kotlin/Array|المصفوفة]]. وفي حال كانت تلك [[Kotlin/Array|المصفوفة]] فارغة أو تحتوي أكثر من عنصر واحد فستعيد القيمة المعدومة <code>null</code>:<syntaxhighlight lang="kotlin">
يمكن تمرير [[Kotlin/ranges|مجال]] محدَّد إلى الدالة <code>slice()‎</code> كوسيط:<nowiki/><nowiki/><syntaxhighlight lang="kotlin">
fun <T> Array<out T>.singleOrNull(): T?
fun <T> Array<out T>.slice(indices: IntRange): List<T>
fun ByteArray.singleOrNull(): Byte?
fun ByteArray.slice(indices: IntRange): List<Byte>
fun ShortArray.singleOrNull(): Short?
fun ShortArray.slice(indices: IntRange): List<Short>
fun IntArray.singleOrNull(): Int?
fun IntArray.slice(indices: IntRange): List<Int>
fun LongArray.singleOrNull(): Long?
fun LongArray.slice(indices: IntRange): List<Long>
fun FloatArray.singleOrNull(): Float?
fun FloatArray.slice(indices: IntRange): List<Float>
fun DoubleArray.singleOrNull(): Double?
fun DoubleArray.slice(indices: IntRange): List<Double>
fun BooleanArray.singleOrNull(): Boolean?
fun BooleanArray.slice(indices: IntRange): List<Boolean>
fun CharArray.singleOrNull(): Char?
fun CharArray.slice(indices: IntRange): List<Char>
</syntaxhighlight>في حال استدعاء الدالة <code>singleOrNull()</code> عبر <nowiki/>[[Kotlin/Array|مصفوفة]] مع تمرير شرط منطقي <code>predicate</code> كمعامل (parameter) فستعيد العنصر الوحيد الذي يحقق ذلك الشرط المنطقي في تلك <nowiki/>[[Kotlin/Array|المصفوفة]]. وفي حال كانت تلك [[Kotlin/Array|المصفوفة]] تحتوي أكثر من عنصر واحد يحقق ذلك الشرط المنطقي أو لا تحتوي أي واحد فستعيد القيمة المعدومة <code>null</code>:<syntaxhighlight lang="kotlin">
fun <T> List<T>.slice(indices: IntRange): List<T>  
inline fun <T> Array<out T>.singleOrNull(
</syntaxhighlight>أو يمكن تمرير كائن من النوع <code>Iterable</code> إلى الدالة <code>slice()</code> كوسيط:<nowiki/><nowiki/><syntaxhighlight lang="kotlin">
    predicate: (T) -> Boolean
fun <T> Array<out T>.slice(indices: Iterable<Int>): List<T>
): T?
fun ByteArray.slice(indices: Iterable<Int>): List<Byte>
inline fun ByteArray.singleOrNull(
fun ShortArray.slice(indices: Iterable<Int>): List<Short>
    predicate: (Byte) -> Boolean
fun IntArray.slice(indices: Iterable<Int>): List<Int>
): Byte?
fun LongArray.slice(indices: Iterable<Int>): List<Long>
inline fun ShortArray.singleOrNull(
fun FloatArray.slice(indices: Iterable<Int>): List<Float>
    predicate: (Short) -> Boolean
fun DoubleArray.slice(indices: Iterable<Int>): List<Double>
): Short?
fun BooleanArray.slice(indices: Iterable<Int>): List<Boolean>
inline fun IntArray.singleOrNull(
fun CharArray.slice(indices: Iterable<Int>): List<Char>
    predicate: (Int) -> Boolean
fun <T> List<T>.slice(indices: Iterable<Int>): List<T>
): Int?
</syntaxhighlight>
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?


</syntaxhighlight>في حال استدعاء الدالة <code>singleOrNull()‎</code> عبر <nowiki/>[[Kotlin/collections|مجموعة]] دون تمرير أي معامل (parameter) فستعيد العنصر الوحيد الموجود في تلك <nowiki/>[[Kotlin/collections|المجموعة]]. وفي حال كانت تلك [[Kotlin/collections|المجموعة]] فارغة أو تحتوي أكثر من عنصر واحد فستعيد القيمة المعدومة <code>null</code>:<syntaxhighlight lang="kotlin">
== المعاملات ==
fun <T> Iterable<T>.singleOrNull(): T?


</syntaxhighlight>في حال استدعاء الدالة <code>singleOrNull()‎</code> عبر  [[Kotlin/List|لائحة]] دون تمرير أي معامل (parameter) فستعيد العنصر الوحيد الموجود في تلك <nowiki/>[[Kotlin/List|اللائحة]]. وفي حال كانت تلك [[Kotlin/List|اللائحة]] فارغة أو تحتوي أكثر من عنصر واحد فستعيد القيمة المعدومة <code>null</code>:<syntaxhighlight lang="kotlin">
=== <code>indices</code> ===
fun <T> List<T>.singleOrNull(): T?
مجال من النوع <code>[[Kotlin/ranges/IntRange|IntRange]]</code> أو كائن من النوع <code>[[Kotlin/collections/Iterable|Iterable]]</code> يحدد الجزء المراد اقتطاعه من [[Kotlin/Array|المصفوفة]] أو [[Kotlin/List|القائمة]] المعطاة.


</syntaxhighlight>
==القيم المعادة==
==القيم المٌعادة==
تُعاد [[Kotlin/List|قائمة]] تحوي جزءًا من [[Kotlin/Array|المصفوفة]] أو [[Kotlin/List|القائمة]] <nowiki/>المعطاة يحدِّده الوسيط <code>indices</code> المعطى.
العنصر الوحيد الموجود في [[Kotlin/Array|المصفوفة]] أو <nowiki/>[[Kotlin/collections|المجموعة]] أو [[Kotlin/List|اللائحة]] التي استُدعيت عبرها، وفي حال تمرير شرط منطقي <code>predicate</code> كمعامل (parameter) فستعيد العنصر الوحيد الذي يحقق ذلك الشرط المنطقي. أما في حال كانت تلك [[Kotlin/Array|المصفوفة]] تحتوي أكثر من عنصر واحد (يحقق <code>predicate</code> في حال تمريرها) أو لا تحتوي أي واحد (يحقق <code>predicate</code>  في حال تمريرها) فستعيد القيمة المعدومة <code>null</code>:
==أمثلة==
==أمثلة==
===استخدام الدالة <code>()slice</code> مع المصفوفات===
<nowiki/><nowiki/>استعمال الدالة <code>()slice</code> لجلب جزء من مصفوفة يقع بين العنصر الثاني والخامس:<syntaxhighlight lang="kotlin">
تعرف الشيفرة الآتية  لائحة باسم <code>array</code> مكونة من عنصر واحد باستخدام الدالة <code>()arrayOf‎</code>، ثم تستخدم الدالة  <code>()slice</code>  على <code>array</code>وتطبع الناتج:<syntaxhighlight lang="kotlin">
fun main(args: Array<String>) {
var array = arrayOf(0)
 
print(array.singleOrNull()) // 0
}
</syntaxhighlight>
===استخدام الدالة <code>()singleOrNull</code> مع المصفوفات: الحالة الثانية===
تعرف الشيفرة الآتية  لائحة باسم <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)
    val array = arrayOf(1, 2, 3, 4, 5, 6)


print(array.single()) // null
    print (array.slice(1..4)) // [2, 3, 4, 5]
}
}
</syntaxhighlight>
</syntaxhighlight>
==أنظر أيضًا==
==انظر أيضًا==
*<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|استثناءً]].
*الدالة <code>[[Kotlin/collections/sliceArray|sliceArray()]]</code>‎ : تقطع جزءًا محدَّدًا من [[Kotlin/Array|المصفوفة]] التي استُدعيت معها ثمَّ تعيده في مصفوفة أو قائمة بحسب الوسيط الممرر إليها.
* التابع <code>[[Kotlin/Array/get|Array.get()‎]]</code>: تجلب قيمة العنصر في المصفوفة عند الفهرس المُحدَّد.
* الدالة <code>[[Kotlin/collections/indexOf|indexOf()‎]]</code>: تجلب فهرس أول ظهور لعنصر محدَّد من <nowiki/>[[Kotlin/Array|المصفوفة]] أو <nowiki/>[[Kotlin/collections|المجموعة]] أو القائمة التي استُدعيت معها.
* الخاصية <code>[[Kotlin/collections/indices|‎‎indices]]</code>: تجلب الفهارس الصحيحة (valid indices) للمصفوفة أو المجموعة (collection).
==مصادر==
==مصادر==
*[https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/single-or-null.html الدالة  slice()‎ في التوثيق الرسميّ للمكتبة القياسيّة في لغة Kotlin.]
*[https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/slice.html صفحة الدالة slice()‎ في التوثيق الرسميّ للمكتبة القياسيّة في لغة Kotlin.]
[[تصنيف:Kotlin]]
[[تصنيف:Kotlin]]
[[تصنيف:Kotlin Functions]]
[[تصنيف:Kotlin Function]]
[[تصنيف:Kotlin Collection]]

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

تقطع الدالة slice()‎ جزءًا محدَّدًا من المصفوفة أو القائمة التي استُدعيت معها ثمَّ تعيده في قائمة.

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

يمكن تمرير مجال محدَّد إلى الدالة slice()‎ كوسيط:

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

أو يمكن تمرير كائن من النوع Iterable إلى الدالة slice()‎ كوسيط:

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

المعاملات

indices

مجال من النوع IntRange أو كائن من النوع Iterable يحدد الجزء المراد اقتطاعه من المصفوفة أو القائمة المعطاة.

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

تُعاد قائمة تحوي جزءًا من المصفوفة أو القائمة المعطاة يحدِّده الوسيط indices المعطى.

أمثلة

استعمال الدالة ()slice لجلب جزء من مصفوفة يقع بين العنصر الثاني والخامس:

fun main(args: Array<String>) {
    val array = arrayOf(1, 2, 3, 4, 5, 6)

    print (array.slice(1..4)) // [2, 3, 4, 5]
}

انظر أيضًا

  • الدالة sliceArray()‎ : تقطع جزءًا محدَّدًا من المصفوفة التي استُدعيت معها ثمَّ تعيده في مصفوفة أو قائمة بحسب الوسيط الممرر إليها.
  • التابع Array.get()‎: تجلب قيمة العنصر في المصفوفة عند الفهرس المُحدَّد.
  • الدالة indexOf()‎: تجلب فهرس أول ظهور لعنصر محدَّد من المصفوفة أو المجموعة أو القائمة التي استُدعيت معها.
  • الخاصية ‎‎indices: تجلب الفهارس الصحيحة (valid indices) للمصفوفة أو المجموعة (collection).

مصادر