MoonBit 语言导览 MoonBit

代码块与语句

代码块是由若干语句和可选结尾表达式组成的复合结构:

{
  statement1
  statement2
  expression
}

以上代码块将按顺序执行statement1statement2,最后计算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
}