结构体(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) { 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) { let Point(x, y, z) = point; (x, y, z) }
|