偏移

支持高效的合并操作并具有定义的遍历顺序的专用数据结构。常用于在规则和切面中累积来自传递依赖项的数据。如需了解详情,请点击此处

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" 有序的依赖项,以及其顺序不同于父依赖项的子级依赖项,其顺序也未指定。该列表是一个副本;修改它不会影响依赖项,反之亦然。