النطاقات والتظليل

نطاق المتغير محدود بالكتلة المحيطة به.

يمكنك تظليل المتغيرات، سواء تلك من النطاقات الخارجية أو المتغيرات من نفس النطاق:

fn main() {
    let a = 10;
    println!("قبل: {a}");
    {
        let a = "hello";
        println!("النطاق الداخلي: {a}");

        let a = true;
        println!("مظلل في النطاق الداخلي: {a}");
    }

    println!("بعد: {a}");
}
  • أظهر أن نطاق المتغير محدود عن طريق إضافة b في الكتلة الداخلية في المثال الأخير، ثم محاولة الوصول إليه خارج تلك الكتلة.
  • التظليل (Shadowing) يختلف عن التغيير (Mutation)، لأنه بعد التظليل، كلا موقعي ذاكرة المتغيرين موجودان في نفس الوقت. كلاهما متاحان تحت نفس الاسم، اعتمادًا على مكان استخدامه في الكود.
  • المتغير المظلل (Shadowing) يمكن أن يكون له نوع مختلف.
  • التظليل (Shadowing) يبدو غامضًا في البداية، لكنه مريح للاحتفاظ بالقيم بعد .unwrap().