効率的なマージ操作をサポートし、走査順序が定義された特殊なデータ構造。ルールとアスペクトの推移的依存関係からデータを蓄積するためによく使用されます。詳しくはこちらをご覧ください。
depset の要素はハッシュ可能で、(組み込みの type(x) 関数で定義されているように)すべて同じ型でなければなりません。ただし、depset は単なるハッシュセットではなく、迅速なメンバーシップ テストには対応していません。一般的な set データ型が必要な場合は、すべてのキーが True
にマッピングされる辞書を使用してシミュレートできます。
依存関係は不変です。コンストラクタ関数を使用して作成し、transitive
引数で他のデプセットとマージまたは拡張する必要があります。
order
パラメータは、depset をイテラブルに変換するために実行される走査の種類を決定します。指定できる値は次の 4 つです。
"default"
(旧"stable"
): 順序が指定されていません(ただし確定的)。"postorder"
(旧"compile"
): 左から右への注文。正確には、すべての子が左端から順に走査され、直接要素が左端から再帰的に走査されます。"preorder"
(旧"naive_link"
): 左から右への予約購入。正確には、直接要素を左端から走査し、次に左端から子を再帰的に走査します。"topological"
(旧"link"
): ルートからリーフまでのトポロジ順序。左から右への記述は保証されません。
2 つの depset を結合できるのは、両方の depset の順序が同じか、どちらかの depset の順序が "default"
の場合のみです。後者の場合、結果として得られる依存関係の順序は、他方の順序と同じになります。
依存関係には重複する値が含まれている場合がありますが、(to_list()
を使用して)反復処理を行うときは重複が抑制されます。重複は順序のセマンティクスを妨げる可能性があります。
メンバー
to_list
list depset.to_list()
"default"
の順序付き依存関係と、順序が親の依存関係と異なる子依存関係の要素についても、順序は指定されません。このリストはコピーです。これを変更しても依存関係には影響せず、その逆も同様です。