偏移

报告问题 查看源代码

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

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

Depset 不可更改。应使用构造函数来创建这些集合,并通过 transitive 参数与其他集合合并或扩充。

order 参数决定了将出发集转换为可迭代对象所执行的遍历类型。有以下四种可能的值:

  • "default"(以前称为 "stable"):顺序未指定(但具有确定性)。
  • "postorder"(以前称为 "compile"):从左到右排序。确切地说,这会以递归方式遍历所有子项(从左到右),然后直接元素(从左到前)。
  • "preorder"(以前称为 "naive_link"):从左到右的预订。确切地说,这会按最左边顺序遍历直接元素,然后以递归方式在最左边优先顺序遍历子项。
  • "topological"(以前称为 "link"):从根到叶的拓扑排序。从左到右并无保证。

仅当两个预设集具有相同的顺序或其中一个具有 "default" 顺序时,才能合并两个预设集。在后一种情况下,生成的 depset 的顺序与另一个的相同。

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

成员

to_list

list depset.to_list()

按照 Depset 的遍历顺序返回没有重复项的元素列表。请注意,对于多次添加到设置中的元素,顺序未指定(但具有确定性)。对于按 "default" 排序的 Depset 以及顺序与父 Depset 顺序不同的子 Depset 的元素,也未指定顺序。此列表只是副本;修改此列表不会对设置产生任何影响,反之亦然。