0Pricing
Kotlin Academy · درس

التصفية والتحويل

حوّلوا المجموعات

التصفية والتحويل درس مجاني في Kotlin Academy على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Kotlin Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Kotlin Academy 4 دروس في المجموع.

تحويل المجموعات

تأتي مجموعات Kotlin مع مجموعة غنية من العمليات الوظيفية. ومن أكثرها شيوعًا filter لاختيار العناصر وmap لتحويلها. وتُرجعان مجموعات جديدة ولا تعدّلان المجموعة الأصلية أبدًا.

دالة filter

تُبقي filter على العناصر التي تحقق المسند فقط، وتُرجع قائمة جديدة.

fun main() {
    val numbers = listOf(1, 2, 3, 4, 5, 6)
    val evens = numbers.filter { it % 2 == 0 }
    println(evens)
}

filterNot وfilterNotNull

تُبقي filterNot على العناصر التي لا تطابق الشرط. وتزيل filterNotNull العناصر التي تساوي null، وتُرجع قائمة غير قابلة لـ null.

fun main() {
    val nums = listOf(1, 2, 3, 4)
    println(nums.filterNot { it > 2 })
    val withNulls = listOf(1, null, 3, null)
    println(withNulls.filterNotNull())
}

filterIndexed

تمنحك filterIndexed كلًا من الفهرس والقيمة داخل المسند.

fun main() {
    val letters = listOf("a", "b", "c", "d")
    val result = letters.filterIndexed { index, _ -> index % 2 == 0 }
    println(result)
}

دالة map

تطبّق map تحويلًا على كل عنصر، وتُرجع قائمة جديدة بالنتائج. ويمكن أن يختلف نوع النتيجة عن نوع الإدخال.

fun main() {
    val numbers = listOf(1, 2, 3)
    val squares = numbers.map { it * it }
    println(squares)
}

التحويل إلى نوع آخر

يمكن لـ map تغيير نوع العناصر، مثل تحويل الأرقام إلى سلاسل نصية.

fun main() {
    val numbers = listOf(1, 2, 3)
    val labels = numbers.map { "Item $it" }
    println(labels)
}

mapIndexed

توفر mapIndexed الفهرس إلى جانب كل عنصر، بحيث يمكنك استخدام الموضع أثناء التحويل.

fun main() {
    val fruits = listOf("apple", "banana", "cherry")
    val numbered = fruits.mapIndexed { i, fruit -> "${i + 1}. $fruit" }
    numbered.forEach { println(it) }
}

mapNotNull

تحوّل mapNotNull كل عنصر، ثم تستبعد أي نتائج تساوي null. وهي طريقة واضحة للجمع بين التحويل والتصفية.

fun main() {
    val strings = listOf("1", "two", "3", "four")
    val numbers = strings.mapNotNull { it.toIntOrNull() }
    println(numbers)
}

تسلسل filter وmap

تتآلف هاتان العمليتان طبيعيًا. ومن الأنماط الشائعة إجراء التصفية أولًا، ثم تحويل العناصر المتبقية.

fun main() {
    val numbers = listOf(1, 2, 3, 4, 5, 6)
    val result = numbers
        .filter { it % 2 == 0 }
        .map { it * 10 }
    println(result)
}

العمليات غير هدّامة

تُرجع كل من filter وmap قوائم جديدة تمامًا. ولا تتغير المجموعة الأصلية، مما يجعل تعليماتك البرمجية أكثر أمانًا وأسهل في الفهم.

fun main() {
    val original = listOf(1, 2, 3)
    val doubled = original.map { it * 2 }
    println("Original: $original")
    println("Doubled: $doubled")
}

التصفية والتحويل عمليًا

تتيح لك filter وmap معًا التعبير عن مسارات البيانات بصورة تصريحية: صف ما تريده، لا كيفية التكرار. وهذا أوضح من حلقات for اليدوية التي تتطلب تتبع الفهارس.

تحقق سريع

ما الفرق بين filter وmap؟

مراجعة

تعلّمتم اختيار العناصر باستخدام filter (ومتغيراته filterNot وfilterIndexed وfilterNotNull) وتحويلها باستخدام map (وmapIndexed وmapNotNull). يمكن ربط هذه العمليات بسلاسة، وهي لا تعدّل المصدر مطلقًا. بعد ذلك ستنظّمون البيانات باستخدام التجميع والتقسيم.

الأسئلة الشائعة

هل درس «التصفية والتحويل» مجاني؟

نعم — نص درس «التصفية والتحويل» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Kotlin Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Kotlin Academy 4 دروس في المجموع.

ماذا ستتعلم في «التصفية والتحويل»؟

حوّلوا المجموعات تتمرن على Kotlin Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Kotlin Academy؟

لا تُشترط خبرة سابقة. Kotlin Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 4.

كم من الوقت يستغرق درس «التصفية والتحويل»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Kotlin Academy هذا؟

نعم. كل درس في Kotlin Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. التصفية والتحويل
  2. التجميع والتقسيم
  3. التجميع
  4. الربط والتسطيح
← العودة إلى Kotlin Academy