Depset

特殊的資料結構,可支援有效率的合併作業,並具有已定義的周遊順序。通常用於從規則和層面從遞移依附元件累積資料。詳情請參閱這裡的說明。

depset 的元素必須可供雜湊,且類型皆相同 (由內建類型(x) 函式定義),但依附元件並非只是雜湊集,也不支援快速成員資格測試。如果您需要一般設定資料類型,可以使用字典模擬資料類型,其中所有索引鍵皆對應至 True

依附元件為無法變更。應使用建構函式函式建立,並透過 transitive 引數與其他解碼器合併或擴增。

order 參數會決定將 depset 轉換為可疊代的周遊類型。可能的值有以下四種:

  • "default" (先前為 "stable"):未指定訂單 (但具有確定性)。
  • "postorder" (原為 "compile"):排序後從左到右。為此,系統會以遞迴方式週遊所有子項,然後再以最上層的最為優先。
  • "preorder" (原為 "naive_link"):從左到右預購。精確來說,這會以最先到最左端的方式掃遍直接元素,然後以遞迴方式掃遍子項。
  • "topological" (先前為 "link"):從根層級往下到葉子的地形排序。我們不提供從左至右的保證。

只有在兩個不同物件具有相同順序,或其中一個有 "default" 順序時,才能合併兩個依附元件。如果是後者,產生的解碼器順序會與其他的先後順序相同。

依附元件可能包含重複值,但進行疊代時 (使用 to_list()) 時,這些值會遭到隱藏。重複項目可能會影響排序語意。

成員

to_list

list depset.to_list()

以遞減集的周遊順序傳回元素清單,且不含重複項目。請注意,將多次加入元素至預設位置的元素不會指定順序 (但具有確定性)。此外,如果 "default" 已排序的 depset 和子項變數的順序不同,該元素的順序也未指定。清單是副本,修改並不會對資料集造成影響。