Move —— 结构体

结构体(Struct)是 Move 中自定义数据类型的核心方式,用于将多个相关字段组合成一个逻辑单元。本文介绍结构体的定义、实例化、字段访问以及解构语法,还包括元组结构体的使用场景。

1. 结构体(Struct)

1.1 定义结构体

1
2
3
4
5
6
7
8
9
10
public struct Student {
age: u8,
isMale: bool,
grades: Grades,
}

public struct Grades {
literature: u64,
math: u64,
}

1.2 创建和使用结构体

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public fun create_student(student_age: u8, is_male: bool, literature: u64, math: u64): Student {
let grades = Grades { literature, math };
let student = Student {
age: student_age,
isMale: is_male,
grades: grades,
};
student
}

public fun get_student(student: Student): (u8, bool, u64, u64) {
// 解构结构体(Unpacking/Destructuring)
let Student { age, isMale, grades: Grades { literature, math } } = student;
(age, isMale, literature, math)
}

2. 元组结构体(Tuple Struct)

如果只关心字段类型而不关心字段名,可以使用元组结构体

2.1 定义元组结构体

1
public struct Point(u64, u64, u64);

2.2 创建和使用元组结构体

1
2
3
4
5
6
7
8
9
public fun create_point(): Point {
Point(10, 20, 30)
}

public fun get_coordinates(point: Point): (u64, u64, u64) {
// 解构元组结构体(Unpacking/Destructuring)
let Point(x, y, z) = point;
(x, y, z)
}