حلقة For المحسنة
جزء من قسم Fundamentals في رحلة Rust على Coddy — الدرس 66 من 75.
هناك طرق مختلفة للتكرار عبر مصفوفة، إليك بعضاً منها:
تأمل المصفوفة التالية:
let numbers = [1, 2, 3, 4, 5];مكرر مباشر:
for num in numbers.iter() {} // القيم: 1, 2, 3, 4, 5
الفهرس والقيمة:
for (index, value) in numbers.iter().enumerate() { } // القيم: (0,1), (1,2), (2,3), (3,4), (4,5)
شرائح بحجم محدد:
for chunk in numbers.chunks(2) { } // القيم: [1,2], [3,4], [5]
التكرار مع التعديل (mutation):
for num in numbers.iter_mut() { *num *= 2; } // تصبح المصفوفة: [2, 4, 6, 8, 10]
التحدي
سهلأنشئ برنامجًا يعالج قائمة تسوق تحتوي على عناصر وأسعارها، ويوفر طرق عرض مختلفة للبيانات.
يجب أن يقوم البرنامج بما يلي:
- طباعة رقم كل عنصر وسعره (باستخدام enumerate)
- طباعة الأسعار في أزواج (باستخدام chunks) كـ "bundle deals"
- تطبيق خصم بنسبة 10% على جميع الأسعار (باستخدام iter_mut)
- طباعة الأسعار النهائية المخفضة
ورقة مرجعية
طرق مختلفة للتكرار عبر المصفوفات في Rust:
المكرر المباشر:
for num in numbers.iter() {}
// القيم: 1, 2, 3, 4, 5الفهرس والقيمة باستخدام enumerate:
for (index, value) in numbers.iter().enumerate() { }
// القيم: (0,1), (1,2), (2,3), (3,4), (4,5)شرائح بحجم محدد باستخدام chunks:
for chunk in numbers.chunks(2) { }
// القيم: [1,2], [3,4], [5]التكرار مع التعديل باستخدام iter_mut:
for num in numbers.iter_mut() {
*num *= 2;
}
// تصبح المصفوفة: [2, 4, 6, 8, 10]جرّب بنفسك
fn main() {
let mut prices = [2.75, 1.50, 5.00, 3.5, 4.1, 2.25, 7.9];
println!("Original Prices:");
// TODO: استخدم enumerate لطباعة رقم كل عنصر وسعره
// المتوقع: "Item 1: $2.99" إلخ.
println!("\nBundle Deals:");
// TODO: استخدم chunks لطباعة أزواج من الأسعار ومجموعها
// المتوقع: "Bundle 1: $2.99 + $1.50 = $4.49" إلخ.
// TODO: استخدم iter_mut لتطبيق خصم 10% على جميع الأسعار
println!("\nPrices after 10% discount:");
// TODO: اطبع الأسعار النهائية بعد الخصم
// المتوقع: "$2.69" إلخ.
}يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس Fundamentals
4المعاملات - الجزء الأول
المعاملات الحسابيةمعامل باقي القسمة (Modulo)اختصارات العمليات الحسابيةمعاملات المقارنةمقارنة النصوص7أساسيات الإدخال والإخراج
الطباعة على الكونسولقراءة مدخلات المستخدممراجعة - حتى 120مراجعة - True أو False2المتغيرات - الجزء الأول
الأرقامالمحارف (Char)النصوص (String)القيم المنطقية (Boolean)المتغيرات القابلة للتغيير5المعاملات - الجزء الثاني
المعاملات المنطقية - الجزء الأولالمعاملات المنطقية - الجزء الثانيمراجعة - المنطق البسيطالمعاملات المنطقية - الجزء الثالث11الدوال
تعريف الدوالالمعاملات والوسائطقيم الإرجاعقيم إرجاع متعددةمراجعة - دالة Sigmaمراجعة - دالة التحقق14التكرار عبر المصفوفات
دليل النطاق (Range)حلقة For المحسنةالاستعارة في الحلقةعمليات المصفوفات الشائعة3المتغيرات - الجزء الثاني
التصريح عن النوعقواعد التسميةاستنتاج النوعمراجعة - تهيئة المتغيراتتحويل الأنواع9الحلقات التكرارية
For عبر السلاسلحلقة Whileجملة Breakجملة Continueالحلقات المتداخلةتسميات الحلقاتالحلقة اللانهائيةمراجعة - الإدخال الديناميكي