特殊資料結構,支援高效率的合併作業,且已定義週遊順序。通常用於從規則和層面中的遞移依附元件累積資料。詳情請參閱這裡。
解碼器的元素必須可雜湊且所有相同類型 (由內建 type(x) 函式定義),但 depset 並非只是雜湊集,不支援快速成員資格測試。如果您需要一般集的資料類型,可以使用字典模擬這種資料類型,字典所有鍵都會對應至 True
。
Depset 無法變更。應使用其建構函式函式建立,並透過 transitive
引數與其他解碼器合併或擴增。
order
參數會決定將 Depset 轉換為可疊代項目所完成的周遊種類。可能的值有四種:
"default"
(先前為"stable"
):未指定順序 (但具有確定性)。"postorder"
(原為"compile"
):排序後,從左到右。實際上,這會以遞迴方式掃遍所有子項,從最左邊開始,再從最左邊的直接元素進入。"preorder"
(原為"naive_link"
):從左到右預購。大致來說,這會掃遍最左側的直接元素,然後以遞迴方式穿越最左側的子項。"topological"
(先前為"link"
):從根層級向下到葉子的順序排序。我們沒有從左到右的保證。
只有在兩個開啟器的順序相同,或其中一個偏移器有 "default"
順序的情況下,才能合併兩個解碼器。如果是後者,產生的 Depset 順序會與另一個的順序相同。
Depset 可能包含重複的值,但在疊代時 (使用 to_list()
) 會隱藏。重複輸入可能會幹擾排序語意。
成員
to_list
list depset.to_list()按照模式的遍歷順序傳回元素清單 (不含重複項目)。請注意,對於加入至位置超過一次的元素,系統不會指定順序 (但確定性)。對於
"default"
排序的 depset,以及其順序與父項偏移不同,子項偏移元素也會指定順序。這份清單是副本;修改後並不會對解碼器產生任何影響,反之亦然。