变量
Rust 中变量默认是不可改变的,当变量不可变时,一旦值被绑定一个名称上,你就不能改变这个值。示例:
rust
// 错误示例
fn main() {
let x = 5; // 变量默认不可变
println!("The value of x is: {x}");
x = 6; // 改变变量值发生错误
println!("The value of x is: {x}");
}
不过可变性也是非常有用的,可以用来更方便地编写代码。尽管变量默认是不可变的,你仍然可以在变量名前添加 mut
来使其可变。示例:
rust
fn main() {
let mut x = 5;
println!("The value of x is: {x}");
x = 6;
println!("The value of x is: {x}");
}
可以通过定义一个与之前变量同名的新变量“遮蔽”第一个变量。Rustacean 们称之为第一个变量被第二个 隐藏(Shadowing) 了,这意味着当您使用变量的名称时,编译器将看到第二个变量,直到第二个变量自己也被隐藏或第二个变量的作用域结束。可以用相同变量名称来隐藏一个变量,以及重复使用 let
关键字来多次隐藏,如下所示:
rust
fn main() {
let x = 5;
let x = x + 1;
{
let x = x * 2;
println!("The value of x in the inner scope is: {x}");
}
println!("The value of x is: {x}");
}
除了变量的命名声明之外,上面的代码还有Rust中输出的方式--Rust调用一个宏println!进行打印输出。
rust
#![allow(unused)]
fn main() {
println!("Hello"); // => "Hello"
println!("Hello, {}!", "world"); // => "Hello, world!"
println!("The number is {}", 1); // => "The number is 1"
println!("{:?}", (3, 4)); // => "(3, 4)"
println!("{value}", value=4); // => "4"
println!("{} {}", 1, 2); // => "1 2"
println!("{:04}", 42); // => "0042" with leading zeros
}
可以看到 println! 宏接受的是可变参数,第一个参数是一个字符串常量,它表示最终输出字符串的格式,包含其中形如 {} 的符号是占位符,会被 println! 后面的参数依次替换。