代码块表达式 Block
一个代码块 (block expression) 就是一个表达式, 所以它可以为一个变量赋值. 看下面的例子:
fn main() {
let x: i32 = if cfg!(target_os = "linux") {
42
} else {
43
};
assert_eq!(x, 42);
}
要注意分号的位置 ;, 在 if 语句的最后一个表达式是不包含分号的. 另一个类似的例子:
fn main() {
let x = {
let mut sum = 0;
for i in 1..10 {
sum += i;
}
sum
};
assert_eq!(x, 45);
}
有时, 会在代码块表过式中自动声明本地的临时变量, 该变量的作用域只限于代码块内部 ( 即 { ... }).
如果在代码块之外有同名的变量, 那么该变量会在代码块内部被遮盖掉 (shadow). 看下面的例子:
fn main() {
let num: i32 = 42;
for num in 0_i32..10 {
println!("{num}");
}
assert_eq!(num, 42);
}
为块表达式设置属性
const 块表达式
unsafe 块表达式
参考 unsafe 块表达式