代码块表达式 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 块表达式