一种支持高效合并操作且具有已定义的遍历顺序的专用数据结构。通常用于在规则和方面累积来自传递依赖项的数据。如需了解详情,请参阅此处。
Depset 的元素必须是可哈希的,并且它们的类型必须完全相同(如内置类型 (x) 函数所定义),但 Depset 不仅仅是哈希集,不支持快速成员资格测试。如果您需要通用数据集数据类型,可以使用字典(其中的所有键都映射到 True
)来模拟数据类型。
偏移量是不可变的。它们应使用其构造函数创建,并通过 transitive
参数合并或扩充。
order
参数决定了将偏移量转换为可迭代对象的遍历类型。有四个可能的值:
"default"
(以前称为"stable"
):顺序未指定(但具有确定性)。"postorder"
(以前称为"compile"
):从左到右排序。确切地说,这是以递归方式遍历所有子项最左边的,然后遍历直接元素最左边的。"preorder"
(以前称为"naive_link"
):从左到右预订。确切地说,这会遍历最左边的直接元素,然后以递归方式遍历最左边的子元素。"topological"
(以前称为"link"
):从根到叶的拓扑排序。无法保证从左到右。
只有当两个依赖项具有相同的顺序或其中一个具有 "default"
顺序时,才能合并两个 Depset。在后一种情况下,生成的 Depse 顺序将与另一订单的顺序相同。
偏移量可能包含重复值,但在迭代(使用 to_list()
)时,这些值将被抑制。重复值可能会干扰排序语义。
会员
收件人列表
list depset.to_list()按照偏移量的遍历顺序返回没有重复元素的列表。请注意,对于在偏移量中多次添加的元素,顺序未指定(但具有确定性)。此外,对于具有
"default"
顺序的依赖项以及顺序不同于父依赖项的子依赖项的元素,未指定其顺序。该列表是副本;修改列表对偏移量没有任何影响,反之亦然。