map وfilter وforEach
حوّل المجموعات باستخدام lambdas
map وfilter وforEach درس مجاني في Android Academy على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Android Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Android Academy 4 دروس في المجموع.
عمليات المجموعات
تأتي مجموعات Kotlin مزودة بعمليات مضمّنة قوية. ثلاث عمليات ستستخدمها باستمرار هي map وfilter وforEach.
تتيح لك هذه العمليات تحويل البيانات وانتقاءها والتكرار عليها في سطر واضح واحد، بدلًا من كتابة حلقات يدوية.
تحوّل map كل عنصر
تنشئ map قائمة جديدة من خلال تطبيق تحويل على كل عنصر.
داخل lambda، تشير it إلى العنصر الحالي. ولا تتغير القائمة الأصلية.
fun main() {
val nums = listOf(1, 2, 3)
val doubled = nums.map { it * 2 }
println(doubled)
}يمكن لـ map تغيير الأنواع
ليس من الضروري أن يكون ناتج map من النوع نفسه لنوع الإدخال.
نحوّل هنا قائمة من الأسماء إلى قائمة بأطوالها.
fun main() {
val names = listOf("Ada", "Linus")
val lengths = names.map { it.length }
println(lengths)
}تُبقي filter على العناصر المطابقة
تعيد filter قائمة جديدة تحتوي فقط على العناصر التي تعيد لها lambda القيمة true.
نُبقي هنا على الأعداد الزوجية فقط.
fun main() {
val nums = listOf(1, 2, 3, 4, 5, 6)
val evens = nums.filter { it % 2 == 0 }
println(evens)
}استخدام filter مع السلاسل النصية
يمكن أن يكون الشرط أي شيء يعيد قيمة Boolean. نُبقي هنا على الكلمات الطويلة فقط.
تُستبعد ببساطة العناصر التي لا تجتاز الاختبار من النتيجة.
fun main() {
val words = listOf("hi", "hello", "hey", "howdy")
val long = words.filter { it.length > 3 }
println(long)
}تنفّذ forEach إجراءً
تنفّذ forEach كتلة من التعليمات البرمجية لكل عنصر، لكنها لا تنشئ قائمة جديدة.
استخدمها للتأثيرات الجانبية مثل الطباعة أو التسجيل.
fun main() {
val fruits = listOf("apple", "banana")
fruits.forEach { println("Fruit: $it") }
}map مقارنةً بـ forEach
تعيد map قائمة محوّلة، لذا استخدمها عندما تحتاج إلى نتيجة.
لا تعيد forEach قيمة مفيدة، لذا استخدمها للإجراءات فقط. ويساعد اختيار العملية المناسبة في إبقاء التعليمات البرمجية واضحة.
تسلسل العمليات
تعيد هذه العمليات مجموعات، لذا يمكنك تسلسلها معًا.
اقرأ من اليسار إلى اليمين: استخدم filter أولًا، ثم طبّق map على العناصر المتبقية.
fun main() {
val nums = listOf(1, 2, 3, 4, 5, 6)
val result = nums.filter { it % 2 == 0 }.map { it * 10 }
println(result)
}تسمية المعامل
بدلًا من it، يمكنك تسمية معامل lambda لتوضيح المعنى، خصوصًا عند تسلسل العمليات.
استخدم سهمًا: { name -> ... }.
fun main() {
val prices = listOf(10, 25, 5)
val withTax = prices.map { price -> price + price / 10 }
println(withTax)
}forEachIndexed
عندما تحتاج إلى الموضع أيضًا، استخدم forEachIndexed. فهي تمرّر الفهرس والعنصر.
وبذلك تتجنب تتبّع عدّاد يدويًا.
fun main() {
val tasks = listOf("eat", "code", "rest")
tasks.forEachIndexed { i, task ->
println("$i: $task")
}
}الجمع بينها في العمل الفعلي
تعبّر هذه العمليات معًا عن مسارات معالجة البيانات ببساطة. نبحث هنا عن الطول الإجمالي للأسماء الطويلة.
تبدو هذه التعليمات البرمجية تقريبًا كأنها نص عادي.
fun main() {
val names = listOf("Ada", "Grace", "Bo")
val total = names.filter { it.length > 2 }.map { it.length }.sum()
println(total)
}تحقق سريع
اختبر مدى فهمك لعمليات المجموعات.
مراجعة
تحوّل map كل عنصر إلى قائمة جديدة، وتُبقي filter على العناصر التي تطابق شرطًا، بينما تنفّذ forEach إجراءً لكل عنصر.
تعيد هذه العمليات مجموعات، لذا يمكنك تسلسلها لبناء مسارات معالجة بيانات واضحة وسهلة القراءة.
الأسئلة الشائعة
هل درس «map وfilter وforEach» مجاني؟
نعم — نص درس «map وfilter وforEach» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Android Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Android Academy 4 دروس في المجموع.
ماذا ستتعلم في «map وfilter وforEach»؟
حوّل المجموعات باستخدام lambdas تتمرن على Android Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Android Academy؟
لا تُشترط خبرة سابقة. Android Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.
كم من الوقت يستغرق درس «map وfilter وforEach»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Android Academy هذا؟
نعم. كل درس في Android Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- القوائم والقوائم القابلة للتغيير
- الخرائط والمجموعات
- map وfilter وforEach
- Lambdas والدوال عالية الرتبة