Skip to main content

集合 (Collections)

集合提供了一种便捷的方式来处理数据组。Sui 框架提供了几个提供集合逻辑的模块:

bag

Bag 是一种异构的类似映射的集合。该集合类似于 sui::table,因为其键和值并未存储在 Bag 值内部,而是使用 Sui 的对象系统存储。Bag 结构仅充当进入对象系统以检索那些键和值的句柄。这意味着在运行时,具有完全相同键值映射的 Bag 值不会相等,使用 ==。

要了解更多,请参阅 Table and Bag 或 GitHub 上的 框架定义

dynamic_field

除了类型定义中声明的字段之外,Sui 对象还可以具有在构建对象后添加的动态字段。与普通字段名称(始终是静态声明的标识符)不同,动态字段名称可以是具有复制、丢弃和存储能力的任何值(例如,整数、布尔值或字符串)。这使得 Sui 程序员可以灵活地动态扩展对象,并且它也作为核心集合类型的构建块。

要了解更多,请参阅 Dynamic Fields 或 GitHub 上的 框架定义

dynamic_object_field

sui::dynamic_field 类似,此模块允许访问动态字段。但与 sui::dynamic_field 不同,这些动态字段绑定的值必须是对象本身。这允许对象仍然存在于存储中,这对于外部工具可能很重要。从 Move 内部来看,除了这一点外,其他地方没有可观察到的差异。

要了解更多,请参阅 Dynamic Fields 或 GitHub 上的 框架定义

linked_table

类似于 sui::table,但值被链接在一起,允许有序插入和删除。

要了解更多,请参阅 GitHub 上的 框架定义

object_bag

类似于 sui::bagObjectBag 是一种异构的类似映射的集合。但与 sui::bag 不同,绑定到这些动态字段的值必须是对象本身。这允许对象仍然存在于存储中,这对于外部工具可能很重要。从 Move 内部来看,除了这一点外,其他地方没有可观察到的差异。

要了解更多,请参阅 Table and Bag 或 GitHub 上的 框架定义

object_table

类似于 sui::tableObjectTable<K, V> 是一种类似映射的集合。但与 sui::table 不同,绑定到这些动态字段的值必须是对象本身。这允许对象仍然存在于存储中,这可能对于外部工具很重要。从 Move 内部来看,除了这一点外,其他地方没有可观察到的差异。

要了解更多,请参阅 Table and Bag 或 GitHub 上的 框架定义

priority_queue

使用最大堆实现的优先级队列。

要了解更多,请参阅 GitHub 上的 框架定义

table

Table 是一种类似映射的集合。但与传统集合不同,其键和值并未存储在 Table 值内部,而是使用 Sui 的对象系统存储。Table 结构仅充当进入对象系统以检索那些键和值的句柄。请注意,这意味着在运行时,具有完全相同键值映射的 Table 值不会相等,使用 ==。

要了解更多,请参阅 Table and Bag 或 GitHub 上的 框架定义

table_vec

使用 Table 实现的基本可扩展矢量库。

要了解更多,请参阅 GitHub 上的 框架定义

vec_map

由向量支持的映射数据结构。该映射保证不包含重复的键,但条目不按键排序--条目按插入顺序包含。所有操作在映射大小的 O(N) 内完成--此数据结构的意图仅在提供对映射 API 的编程便利性。大型映射应该使用手工编写的父/子关系。需要排序迭代而不是按插入顺序迭代的映射也应该手工编写。

要了解更多,请参阅 GitHub 上的 框架定义

vec_set

vec_set 的主要对象是由向量支持的集合数据结构。这个集合保证不包含重复的键。所有操作在集合大小的 O(N) 内完成。这个数据结构的目的只是为了提供对集合 API 的编程便利性。需要排序迭代而不是按插入顺序迭代的集合应该手工编写。

要了解更多,请参阅 GitHub 上的 框架定义