偏移

报告问题 查看源代码 每夜 build · 7.4 .

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

Depset 的元素必须可进行哈希处理,并且属于同一类型(由内置 type(x) 函数定义),但 Depset 不仅仅是哈希集,并且不支持快速成员资格测试。如果您需要常规的集数据类型,可以使用一个字典来模拟它,其中所有键都映射到 True

Depset 不可更改。应使用其构造函数创建它们,并通过 transitive 参数与其他 depset 合并或进行增强。

order 参数用于确定转换依赖项集为可迭代对象时所执行的遍历类型。有以下四种可能的值:

  • "default"(以前称为 "stable"):顺序未指定(但确定性)。
  • "postorder"(以前称为 "compile"):从左到右的后续排序。具体而言,此方法会以从左到右的顺序递归遍历所有子项,然后以从左到右的顺序递归遍历直接元素。
  • "preorder"(以前称为 "naive_link"):从左到右的预排序。具体而言,此方法会先从左到右遍历直接元素,然后递归地从左到右遍历子元素。
  • "topological"(以前称为 "link"):从根到叶的拓扑排序。无法保证从左到右的顺序。

只有在两个 depset 具有相同的顺序或其中一个 depset 具有 "default" 顺序时,才能合并这两个 depset。在后一种情况下,生成的存储分区的顺序将与另一个存储分区的顺序相同。

Depset 可能包含重复值,但在迭代(使用 to_list())时,这些值会被抑制。重复值可能会干扰排序语义。

成员

to_list

list depset.to_list()

返回依赖项集的遍历顺序中的元素列表(不含重复项)。请注意,对于多次添加到设置中的元素,顺序未指定(但具有确定性)。对于 "default" 有序的 depset,以及子 depset 的元素(其顺序与父 depset 的顺序不同),顺序也是未指定的。该列表是副本;修改它对 depset 没有影响,反之亦然。