结构体
结构体是由其他类型组合而成的新类型。
在示例中,我们定义了一个包含两个整数字段x和y的结构体Point。
我们可以通过编写 Point::{ x: 3, y: 4 } 来创建 Point 实例。保留
Point:: 前缀可以明确指出所构造的类型。在某些上下文中,编译器仍能推断
{ x: 3, y: 4 } 这类未限定字面量的类型,但直接使用 let 绑定时推荐使用带类型前缀的形式。
与元组类似,我们可以使用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 = 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::{ ..point, x: 20 }
println("update: \{to_repr(point2)}")
}