Skip to content

复合类型

Sway中复合数据类型的示例

sway
contract;

// 复合类型
// - 元组
//   - 解构
// - 结构体
// - 数组

struct Point {
    x: u64,
    y: u64,
}

abi MyContract {
    fn test_func() -> Point;
}

impl MyContract for Contract {
    fn test_func() -> Point {
        // 元组
        let t: (u64, bool) = (42, true);
        // 访问元组的值
        assert(t.0 == 42);
        assert(t.1);

        // 解构元组(类型注解是可选的)
        let (num, boo) = t;

        // 长度为1的元组
        let one: (u64, ) = (123, );

        // 结构体
        let p = Point { x: 1, y: 2 };
        // 访问结构体字段
        assert(p.x == 1);
        assert(p.y == 2);

        // 数组
        let u_arr: [u8; 5] = [1, 2, 3, 4, 5];
        let s_arr: [str[3]; 3] = ["cat", "dog", "rat"];

        let struct_arr: [Point; 2] = [Point { x: 1, y: 2 }, Point { x: 11, y: 22 }];

        // 修改数组
        let mut mut_arr: [bool; 2] = [true, false];
        mut_arr[1] = true;

        p
    }

}