我不确定为什么foo在for循环中没有修改阴影变量的值:
fn main() {
let foo: i32 = 5;
for _x in 0..5 {
let foo = foo + 1;
}
println!("Value of foo: {}", foo);
//This prints Value of foo: 5
let bar: i32 = 5;
let bar = bar + 1;
println!("Value of bar: {}", bar);
//This prints Value of foo: 6
}
Run Code Online (Sandbox Code Playgroud)
我浏览了变量和可变性部分以及一些堆栈溢出问题,但我找不到foo未修改值的原因。
我在loop.
for和loop有阴影变量的一些限制?为什么不允许?mut能够变量吗?我正在使用 Rust 1.42.0
let “引入/创建一个新变量”。
因此,let foo = foo+1;创建一个名为“foo”的新变量,它只存在于循环中。这个变量被初始化为foo+1,只有“右手边foo”指的是已经存在的foo。
因此,只创建了“内循环foo”,而外foo循环不会触及。
如果你想修改外层foo,试试这个:
let mut foo: i32 = 5; // mut tells rust that variable is going to be modified
for _x in 0..5{
foo = foo+1; // no "let", so not introducing a new variable
}
println!("Value of foo: {}", foo);
Run Code Online (Sandbox Code Playgroud)
另一方面,在与前一个作用域相同的范围内let bar=bar+1创建一个新变量,因此第一个变量被新变量遮蔽,基本上无法再访问。barbarbarbar
| 归档时间: |
|
| 查看次数: |
446 次 |
| 最近记录: |