结构体
结构体是由其他类型组合而成的新类型。
在示例中,我们定义了一个包含两个整数字段x和y的结构体Point。
我们可以通过编写{ x: 3, y: 4 }的语法形式来创建Point实例。由于编译器可以通过字段标签x和y推断类型,因此可以省略结构体名称。
我们也可以显式添加Point::前缀来明确指定实例类型,这在需要消除类型歧义时非常有用。
与元组类似,我们可以使用point.x语法来访问结构体的字段。
结构体定义后的 derive(Debug) 表示我们可以将结构体转换为调试表示,例如使用 to_repr。
结构体字段默认是不可变的(immutable),创建后不可修改。MoonBit 提供称为功能更新(functional update)的语法,允许通过现有结构体创建包含更新字段的新结构体。
我们将在下一课中学习如何使结构体字段可变。
struct Point {
x : Int
y : Int
} derive(Debug)
fn main {
// create a point
let point = { x: 3, y: 4 }
println("point: \{to_repr(point)}")
println("point.x: \{point.x}")
println("point.y: \{point.y}")
// functional update
let point2 = {..point, x: 20}
println("update: \{to_repr(point2)}")
}