当你需要一组数值时,可以使用向量(vectors)。在Move中,向量默认是动态的,没有固定的大小。 它可以根据需求增长和缩小。在Sui中,默认已经导入了向量,不需要额外添加。 你只需要在模块顶部使用 use std::vector 就可以访问它。我们将在后续课程中讨论其他数据结构和库。示例:

module 0x123::my_module {
   use std::vector;
   use sui::object::{Self, UID};


   public struct MyObject has key {
       id: UID,
       values: vector<u64>,
       bool_values: vector<bool>,
       address_values: vector<address>,
   }
}

你也可以通过引用结构体将对象存储在向量中。请注意, 为了将一个对象存储在另一个对象的字段中,它的结构体需要具有存储 store能力。

module 0x123::my_module {
   use std::vector;
   use sui::object::{Self, UID};


   public struct NestedObject has key, store {
       id: UID,
       owner: address,
       balance: u64,
   }


   public struct GlobalData has key {
       id: UID,
       wrapped_objects: vector<NestedObject>,
   }
}

创建一个空向量时,可以使用以下语法:

fun init() {
   // 空向量还没有声明类型。第一个添加的值将决定它的类型。
   let empty_vector = vector[];
   let int_vector = vector[1, 2, 3];
   let bool_vector = vector[true, true, false];
}