结构体
结构体是由其他类型组合而成的新类型。
在示例中,我们定义了一个包含两个整数字段x
和y
的结构体Point
。
我们可以通过编写{ x: 3, y: 4 }
的语法形式来创建Point
实例。由于编译器可以通过字段标签x
和y
推断类型,因此可以省略结构体名称。
我们也可以显式添加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)
}