forEach وrepeat وforEachIndexed
استكشف المساعدات الوظيفية للتكرار ومتى تكون أفضل من الحلقات التقليدية.
forEach وrepeat وforEachIndexed درس مجاني في Kotlin Academy على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Kotlin Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Kotlin Academy 4 دروس في المجموع.
التكرار الوظيفي
بالإضافة إلى for، توفر Kotlin تكرارًا عالي الرتبة باستخدام forEach وforEachIndexed وrepeat. وتجعل هذه الدوال الحلقات الصغيرة أكثر تعبيرًا.
أساسيات forEach
تقبل forEach دالة lambda وتنفّذها لكل عنصر. ويُسمى العنصر ضمنيًا it.
fun main() {
val items = listOf("a", "b", "c")
items.forEach { println(it) }
}forEach مع مَعلمة مسماة
امنح مَعلمة دالة lambda اسمًا أوضح عندما تكون قراءة it غير واضحة.
fun main() {
val users = listOf("Alice", "Bob", "Charlie")
users.forEach { name ->
println("Hello, $name!")
}
}استخدام repeat لتكرارات ثابتة
تنفّذ repeat(n) كتلتها بالضبط n مرات. وتتلقى دالة lambda فهرس التكرار (بدءًا من 0).
fun main() {
repeat(5) {
println("Iteration $it")
}
}استخدام repeat للتأثيرات الجانبية
استخدم repeat لتنفيذ إجراءات بسيطة عددًا محددًا من المرات: مثل طباعة فاصل أو إعادة محاولة استدعاء وغير ذلك.
fun main() {
repeat(3) { println("-".repeat(20)) }
}forEachIndexed
توفر forEachIndexed كلًا من الفهرس والعنصر لدالة lambda.
fun main() {
val words = listOf("Hello", "Kotlin", "World")
words.forEachIndexed { index, word ->
println("$index: $word")
}
}forEach مقارنةً بـ for
تتميز forEach بالإيجاز، لكنها لا تتيح break وcontinue. استخدم حلقة for التقليدية إذا احتجت إلى الخروج مبكرًا.
fun main() {
val nums = listOf(1, 2, 3, 4, 5)
// forEach: runs to completion
nums.forEach { print("$it ") }
println()
// for: can break
for (n in nums) {
if (n == 3) break
print("$n ")
}
println()
}الإرجاع من forEach
يمكنك محاكاة continue في forEach باستخدام return@forEach مع وسم.
fun main() {
listOf(1, 2, 3, 4).forEach {
if (it % 2 == 0) return@forEach // skip
println("odd: $it")
}
}forEach على خريطة
تكشف forEach على الخريطة عن كل Map.Entry باسم it؛ فكّك البنية لتحسين قابلية القراءة.
fun main() {
val scores = mapOf("Alice" to 9, "Bob" to 7)
scores.forEach { (name, score) ->
println("$name -> $score")
}
}تسلسل repeat مع استدعاءات أخرى
تُرجع repeat القيمة Unit، لذلك لا يمكنك تسلسلها وظيفيًا. استخدمها للتأثيرات الجانبية فقط.
fun main() {
var sum = 0
repeat(10) { sum += it }
println("Sum 0..9 = $sum") // 45
}ملاحظة حول الأداء
في الحلقات الضيقة على مجموعات كبيرة، تكون حلقة for العادية أسرع قليلًا لأنها تتجنب إنشاء دالة lambda. أما من أجل الوضوح، ففضّل forEach.
fun main() {
val n = 1_000_000
var sum = 0L
for (i in 1..n) sum += i
println(sum)
}تحقق سريع
أي بنية توفر الفهرس والعنصر معًا لدالة lambda الخاصة بها؟
مراجعة
forEach: دالة lambda لكل عنصر. forEachIndexed: الفهرس والعنصر. repeat(n): حلقة ثابتة تتكرر n مرات. لا تدعم أي منها break التقليدية — استخدم for للخروج المبكر.
تعلم Kotlin مع معلم ذكاء اصطناعي — مجانًا
اكتب وقم بتشغيل أكوادك الفعلية في المتصفح، واحصل على مساعدة فورية من معلم ذكاء اصطناعي متاح 24/7، واستمر من حيث توقفت على الويب أو في التطبيق.
- الدورات
- 51
- الدروس
- 203
الأسئلة الشائعة
هل درس «forEach وrepeat وforEachIndexed» مجاني؟
نعم — نص درس «forEach وrepeat وforEachIndexed» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Kotlin Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Kotlin Academy 4 دروس في المجموع.
ماذا ستتعلم في «forEach وrepeat وforEachIndexed»؟
استكشف المساعدات الوظيفية للتكرار ومتى تكون أفضل من الحلقات التقليدية. تتمرن على Kotlin Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Kotlin Academy؟
لا تُشترط خبرة سابقة. Kotlin Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.
كم من الوقت يستغرق درس «forEach وrepeat وforEachIndexed»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Kotlin Academy هذا؟
نعم. كل درس في Kotlin Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- حلقة for على النطاقات والمجموعات
- while وdo-while: متى تستخدم كلًّا منهما
- forEach وrepeat وforEachIndexed
- break وcontinue وعمليات الإرجاع المسمّاة