变量遮蔽(下)
本课属于 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;
}挑战
入门修复给定的代码,使其能够无错误地运行。
亲手试试
fn main() {
// 修复这段代码,让它正常运行
let number = 42;
{
let number = number;
println!("number is {}", number);
number = 100; // 这会导致错误
println!("number is {}", number);
}
println!("number is {}", number);
}这节课包含一个小测验。开始学习即可作答,并记录你的进度。
基础知识中的所有课
自己练习: Rust 在线编译器