代码块与语句
代码块是由若干语句和可选结尾表达式组成的复合结构:
{
statement1
statement2
expression
}
以上代码块将按顺序执行statement1
、statement2
,最后计算expression
的值作为整个代码块的返回值。若省略结尾表达式,代码块将返回()
(其类型为Unit
)。
语句可以是以下形式:
- 变量声明
- 变量赋值
- 任何返回
Unit
类型的表达式
代码块同时关联着命名空间作用域。在main
函数示例中,内部代码块声明的变量a
会遮蔽(shadow)外部同名变量a
,且仅在内部代码块中可见。
fn main {
let a = 100
{
let mut a = 0
println("checkpoint 1")
a = a + 1
}
println("checkpoint 2")
println(f())
}
fn f() -> Int {
let b = 3.14
let result = {
let b = 1
println("checkpoint 3")
b + 5
}
result // same as `return result` here
}