كيفية الحصول على فهرس العنصر الحالي في حلقة forEach في Kotlin؟
مرحبًا أيها الزملاء! لقد بدأت للتو في تعلم Kotlin وواجهت مشكلة أثناء العمل مع الحلقات. في Java، كنت معتادًا على استخدام for العادي مع الفهرس، على سبيل المثال:
```java
for (int i = 0; i < list.size(); i++) {
System.out.println(i + ": " + list.get(i));
}
```
لكن في Kotlin، أرى أن الجميع يوصي باستخدام forEach:
```kotlin
list.forEach { item ->
println(item)
}
```
هذا مريح، لكن ماذا لو كنت بحاجة ليس فقط إلى العنصر نفسه، بل أيضًا إلى فهرسه؟ على سبيل المثال، أريد عرض قائمة المهام مع الأرقام:
```kotlin
val tasks = listOf("شراء خبز", "غسل الأطباق", "أداء الواجبات")
tasks.forEach { task ->
println("$index: $task") // خطأ! index غير معرّف
}
```
هنا أحصل على خطأ في الترجمة لأن المتغير index غير موجود. حاولت إنشاء عداد منفصل:
```kotlin
var index = 0
tasks.forEach { task ->
println("$index: $task")
index++
}
```
لكن هذا يبدو حلاً غير أنيق. علاوة على ذلك، إذا كنت أستخدم التوازي