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