没有 "let" 的影子
Shadowing in without "let"
据我了解,Rust 中的阴影允许您通过使用 let
并重新声明变量来使用相同的变量,例如
let x = 5;
let x = x + 1;
let x = x * 2;
println!("The value of x is: {}", x);
但是,如果您将变量设置为可变的,那么这不会模仿阴影,例如:
let mut x = 5;
println!("The value of x is: {}", x);
x = 6;
println!("The value of x is: {}", x);
x = 7;
println!("The value of x is: {}", x);
示例1&2中,变量存储在什么地方,是栈还是堆?
您示例中的所有值都存储在堆栈中。在示例 1 中,每个 let
语句都会将一个新值压入堆栈。
看起来你从 The Rust Programming Language 那里得到了例子。也许再读一遍这一段以强调:
The other difference between mut
and shadowing is that because we’re
effectively creating a new variable when we use the let
keyword again,
we can change the type of the value but reuse the same name.
据我了解,Rust 中的阴影允许您通过使用 let
并重新声明变量来使用相同的变量,例如
let x = 5;
let x = x + 1;
let x = x * 2;
println!("The value of x is: {}", x);
但是,如果您将变量设置为可变的,那么这不会模仿阴影,例如:
let mut x = 5;
println!("The value of x is: {}", x);
x = 6;
println!("The value of x is: {}", x);
x = 7;
println!("The value of x is: {}", x);
示例1&2中,变量存储在什么地方,是栈还是堆?
您示例中的所有值都存储在堆栈中。在示例 1 中,每个 let
语句都会将一个新值压入堆栈。
看起来你从 The Rust Programming Language 那里得到了例子。也许再读一遍这一段以强调:
The other difference between
mut
and shadowing is that because we’re effectively creating a new variable when we use thelet
keyword again, we can change the type of the value but reuse the same name.