Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

التظليل - الجزء الثاني

جزء من قسم 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;
}
challenge icon

التحدي

مبتدئ

أصلح الكود المعطى بحيث يعمل دون أخطاء.

ورقة مرجعية

عند تظليل متغير (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);
}
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس Fundamentals