كيفية إنشاء نطاق (range) في Kotlin يحسب بترتيب عكسي (من الأكبر إلى الأصغر)؟
مرحبًا زملائي! بدأت مؤخرًا في تعلم Kotlin وواجهت مشكلة أثناء العمل مع النطاقات (ranges). أحتاج إلى تكرار الأرقام من 10 إلى 1 في حلقة for، أي بترتيب عكسي. جربت الكتابة هكذا:
```kotlin
for (i in 10..1) {
println(i)
}
```
لكن هذا الكود لا يطبع شيئًا! كنت أتوقع رؤية الأرقام 10, 9, 8... 1، لكن الحلقة لا تنفذ ببساطة. قرأت الوثائق وأدركت أن `10..1` ينشئ نطاقًا فارغًا، لأن الخطوة الافتراضية هي +1، والقيمة الأولية أكبر من القيمة النهائية.
حاولت استخدام `downTo`:
```kotlin
for (i in 10 downTo 1) {
println(i)
}
```
هذا نجح! لكن لدي عدة أسئلة:
1. لماذا لا يعمل `10..1` بينما يعمل `10 downTo 1`؟
2. هل يمكن إنشاء متغير نطاق (range) يخزن التسلسل العكسي لاستخدامه عدة مرات لاحقًا؟
3. هل هناك طرق أخرى للعد العكسي، مثل استخدام `reversed()` أو `step`؟
يرجى شرح كيفية العمل بشكل صحيح.