Menu
CoddyTech

变量遮蔽(下)

本课属于 Coddy Rust 学习旅程的“基础知识”单元。第 48 课,共 75 课。

在 Rust 中遮蔽变量时,新变量与原变量完全独立,因此需要单独声明其可变性。遮蔽不会继承原变量的可变性。

let mut mut_val = 7;
// 原来的变量是可变的
{ 
    let mut_val = 8;
    // 这是一个新变量,遮蔽了外层的 mut_val
      
    mut_val = 50;
    // 这里发生错误是因为
    // mut_val 是不可变的
}
// 这里没问题 
// 在这个作用域中,mut_val 并没有被冻结
mut_val = 3;

要修复这个问题,我们可以在内部作用域中添加 mut:

{
	let mut mut_val = 8;
	mut_val = 50;
}
challenge icon

挑战

入门

修复给定的代码,使其能够无错误地运行。

亲手试试

fn main() {
    // 修复这段代码,让它正常运行
    let number = 42;
    {
        let number = number;
        println!("number is {}", number);
        number = 100;  // 这会导致错误
        println!("number is {}", number);
    }
    println!("number is {}", number);
}
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

基础知识中的所有课

自己练习: Rust 在线编译器