一種專門的資料結構,可支援有效率的合併作業,並具有定義的遍歷順序。通常用於從規則和構面中的遞移依附元件累積資料。詳情請參閱本文。
deps 的元素必須可雜湊處理,且類型都相同 (如內建 type(x) 函式所定義),但 deps 並非單純的雜湊集,也不支援快速成員資格測試。如需一般集合資料型別,您可以使用字典模擬,其中所有鍵都會對應至 True
。
Depset 不會變更。應使用建構函式建立,並透過 transitive
引數與其他 depsets 合併或擴增。
order
參數會決定轉換 depset 為可疊代項目時執行的遍歷類型。可能的值有四個:
"default"
(舊稱"stable"
):順序未指定 (但具決定性)。"postorder"
(舊版為"compile"
):貼文由左至右排序。具體來說,這會以遞迴方式遍歷所有子項 (從最左側開始),然後遍歷直接元素 (從最左側開始)。"preorder"
(舊版為"naive_link"
):從左到右預先排序。具體來說,這會先從最左側開始遍歷直接元素,然後以遞迴方式從最左側開始遍歷子項。"topological"
(舊稱"link"
):從根節點到葉節點的拓撲排序。我們無法保證從左至右的順序。
只有在兩個 depsets 的順序相同,或其中一個具有 "default"
順序時,才能合併。在後者中,產生的 depset 順序會與其他 depset 的順序相同。
Depset 可能包含重複值,但這些值會在疊代時 (使用 to_list()
) 遭到抑制。重複值可能會干擾排序語意。
成員
to_list
list depset.to_list()
"default"
排序的依附元件集,以及順序與父項依附元件集不同的子項依附元件集元素,順序也未指定。這個清單是副本,修改清單不會影響 deps 集合,反之亦然。