الاستعارة في الحلقة
جزء من قسم Fundamentals في رحلة Rust على Coddy — الدرس 67 من 75.
عندما نكتب حلقة تكرارية في Rust، لدينا طريقتان رئيسيتان للتعامل مع بياناتنا: يمكننا النظر إليها (باستخدام &) أو أخذها. على سبيل المثال، لننظر إلى البيانات التالية:
let numbers = vec![1, 2, 3, 4, 5];
let mut sum = 0;الطريقة 1: النظر إلى البيانات (باستخدام &):
for number in &numbers {
sum += number;
}
println!("I can use it here: {:?}", numbers);الطريقة 2: أخذ البيانات (بدون &):
for number in numbers {
sum += number;
}
// println!("Can't use {:?} anymore!", numbers);
// سيؤدي هذا إلى حدوث خطأفكر في الأمر على هذا النحو:
- استخدام
&يشبه النظر إلى ألبوم صور: يمكنك رؤية جميع الصور، لكن الألبوم يظل كما هو
- عدم استخدام
&يشبه إخراج الصور: يمكنك استخدامها، لكن الألبوم سيكون فارغاً بعد ذلك
الآن هذا النمط:
for num in numbers.iter() {}يشبه هذا:
for num in &numbers {}وحلقة تكرار للتعديل (mutation loop):
for num in numbers.iter_mut() {
*num *= 2;
}يمكن أيضًا كتابتها بهذه الطريقة:
for num in &mut numbers {
*num *= 2;
}ورقة مرجعية
في حلقات Rust التكرارية، يمكنك إما النظر إلى البيانات (باستخدام &) أو نقل ملكيتها:
النظر إلى البيانات (الاستعارة):
let numbers = vec![1, 2, 3, 4, 5];
for number in &numbers {
sum += number;
}
// لا يزال من الممكن استخدام numbers بعد الحلقة التكراريةنقل الملكية:
let numbers = vec![1, 2, 3, 4, 5];
for number in numbers {
sum += number;
}
// لا يمكن استخدام numbers بعد الحلقة التكراريةطرق المكرر (Iterator methods):
// هذه متكافئة:
for num in numbers.iter() {}
for num in &numbers {}
// للتعديل:
for num in numbers.iter_mut() { *num *= 2; }
for num in &mut numbers { *num *= 2; }جرّب بنفسك
لا يتضمّن هذا الدرس تحدّيًا برمجيًا.
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس Fundamentals
4المعاملات - الجزء الأول
المعاملات الحسابيةمعامل باقي القسمة (Modulo)اختصارات العمليات الحسابيةمعاملات المقارنةمقارنة النصوص7أساسيات الإدخال والإخراج
الطباعة على الكونسولقراءة مدخلات المستخدممراجعة - حتى 120مراجعة - True أو False2المتغيرات - الجزء الأول
الأرقامالمحارف (Char)النصوص (String)القيم المنطقية (Boolean)المتغيرات القابلة للتغيير5المعاملات - الجزء الثاني
المعاملات المنطقية - الجزء الأولالمعاملات المنطقية - الجزء الثانيمراجعة - المنطق البسيطالمعاملات المنطقية - الجزء الثالث11الدوال
تعريف الدوالالمعاملات والوسائطقيم الإرجاعقيم إرجاع متعددةمراجعة - دالة Sigmaمراجعة - دالة التحقق14التكرار عبر المصفوفات
دليل النطاق (Range)حلقة For المحسنةالاستعارة في الحلقةعمليات المصفوفات الشائعة3المتغيرات - الجزء الثاني
التصريح عن النوعقواعد التسميةاستنتاج النوعمراجعة - تهيئة المتغيراتتحويل الأنواع9الحلقات التكرارية
For عبر السلاسلحلقة Whileجملة Breakجملة Continueالحلقات المتداخلةتسميات الحلقاتالحلقة اللانهائيةمراجعة - الإدخال الديناميكي