التظليل - الجزء الثاني
جزء من قسم Fundamentals في رحلة Rust على Coddy — الدرس 48 من 75.
عندما تقوم بتظليل متغير في Rust، يكون المتغير الجديد مستقلاً تماماً عن المتغير الأصلي، ويحتاج إلى إعلان القابلية للتغيير (mutability) الخاص به. التظليل لا يرث قابلية التغيير من المتغير الأصلي.
let mut mut_val = 7;
// المتغير الأصلي قابل للتغيير (mutable)
{
let mut_val = 8;
// هذا متغير جديد يحجب (shadows) المتغير الخارجي mut_val
mut_val = 50;
// حدث خطأ لأن
// mut_val ليس قابلاً للتغيير
}
// هنا الأمر جيد
// mut_val ليس مجمداً في هذا النطاق
mut_val = 3;لإصلاح ذلك، يمكننا إضافة mut في النطاق الداخلي:
{
let mut mut_val = 8;
mut_val = 50;
}التحدي
مبتدئأصلح الكود المعطى بحيث يعمل دون أخطاء.
ورقة مرجعية
عند تظليل متغير (shadowing) في لغة Rust، يكون المتغير الجديد مستقلاً تماماً ويحتاج إلى إعلان القابلية للتغيير (mutability) الخاص به. التظليل لا يرث القابلية للتغيير من المتغير الأصلي.
let mut mut_val = 7;
// المتغير الأصلي قابل للتغيير
{
let mut_val = 8;
// هذا يظلل mut_val الخارجي ولكنه غير قابل للتغيير
mut_val = 50;
// خطأ: mut_val غير قابل للتغيير في هذا النطاق
}لإصلاح ذلك، أضف mut إلى المتغير المظلل:
{
let mut mut_val = 8;
mut_val = 50; // الآن هذا يعمل
}جرّب بنفسك
fn main() {
// أصلح هذا الكود لجعله يعمل
let number = 42;
{
let number = number;
println!("number is {}", number);
number = 100; // سيؤدي هذا إلى حدوث خطأ
println!("number is {}", number);
}
println!("number is {}", number);
}يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس Fundamentals
4المعاملات - الجزء الأول
المعاملات الحسابيةمعامل باقي القسمة (Modulo)اختصارات العمليات الحسابيةمعاملات المقارنةمقارنة النصوص7أساسيات الإدخال والإخراج
الطباعة على الكونسولقراءة مدخلات المستخدممراجعة - حتى 120مراجعة - True أو False2المتغيرات - الجزء الأول
الأرقامالمحارف (Char)النصوص (String)القيم المنطقية (Boolean)المتغيرات القابلة للتغيير5المعاملات - الجزء الثاني
المعاملات المنطقية - الجزء الأولالمعاملات المنطقية - الجزء الثانيمراجعة - المنطق البسيطالمعاملات المنطقية - الجزء الثالث11الدوال
تعريف الدوالالمعاملات والوسائطقيم الإرجاعقيم إرجاع متعددةمراجعة - دالة Sigmaمراجعة - دالة التحقق14التكرار عبر المصفوفات
دليل النطاق (Range)حلقة For المحسنةالاستعارة في الحلقةعمليات المصفوفات الشائعة3المتغيرات - الجزء الثاني
التصريح عن النوعقواعد التسميةاستنتاج النوعمراجعة - تهيئة المتغيراتتحويل الأنواع9الحلقات التكرارية
For عبر السلاسلحلقة Whileجملة Breakجملة Continueالحلقات المتداخلةتسميات الحلقاتالحلقة اللانهائيةمراجعة - الإدخال الديناميكي