MoonBit Language Tour MoonBit

Variables

The let keyword is used to define a variable in MoonBit.

Type Annotation

You can specify the type of a variable by using a colon followed by the type name. Type annotation is optional - if not provided, MoonBit will automatically infer the type from the assigned value.

If you don't want to define an extra variable, you can also add a type annotation to any expression using the syntax (expression : Type).

Mutability

Variables in MoonBit are immutable by default, which means they cannot be reassigned after initialization. To create a mutable variable that can be reassigned, add the mut keyword before the variable name.

///|
fn main {
  // explicit type annotation
  let a1 : Int = 10
  println((10 : Int))

  // Variable with type inference (Int inferred from value 20)
  let b = 20
  println("a + b = \{a1 + b}")

  // Mutable variable - can be modified
  let mut c = 10
  println("c before: \{c}")
  c = c + 1
  println("c after: \{c}")

  // Immutable variable - cannot be modified
  let d = 20
  println("d = \{d}")
  // d = d + 1  // Uncommenting this line will cause a compilation error
}