MoonBit 语言导览 MoonBit

结构体

结构体是由其他类型组合而成的新类型。

在示例中,我们定义了一个包含两个整数字段xy的结构体Point

我们可以通过编写{ x: 3, y: 4 }的语法形式来创建Point实例。由于编译器可以通过字段标签xy推断类型,因此可以省略结构体名称。

我们也可以显式添加Point::前缀来明确指定实例类型,这在需要消除类型歧义时非常有用。

与元组类似,我们可以使用point.x语法来访问结构体的字段。

结构体定义后的derive(Show)表示我们可以通过println函数直接打印结构体内容。

结构体字段默认是不可变的(immutable),创建后不可修改。Moonbit提供称为功能更新(functional update)的语法,允许通过现有结构体创建包含更新字段的新结构体。

我们将在下一课中学习如何使结构体字段可变。

struct Point {
  x : Int
  y : Int
} derive(Show)

fn main {
  // create a point
  let point = { x: 3, y: 4 }
  println("point: \{point}")
  println("point.x: \{point.x}")
  println("point.y: \{point.y}")
  
  // functional update
  let point2 = {..point, x: 20}
  println(point2)
}