効率的なマージ オペレーションをサポートし、定義されたトラバーサル順序を持つ特殊なデータ構造。通常、ルールとアスペクトの推移的依存関係からデータを蓄積するために使用されます。詳しくは、こちらをご覧ください。
deps の要素はハッシュ可能で、すべて同じ型(組み込みの type(x) 関数で定義)である必要がありますが、deps は単なるハッシュセットではなく、高速なメンバーシップ テストはサポートしていません。一般的なセット データ型が必要な場合は、すべてのキーが True
にマッピングされるディクショナリを使用してシミュレートできます。
Depsets は不変です。コンストラクタ関数を使用して作成し、transitive
引数を介して他の depsets とマージまたは拡張する必要があります。
order
パラメータは、depset を iterable に変換するために実行されるトラバーサルの種類を決定します。次の 4 つの値があります。
"default"
(以前の"stable"
): 順序は指定されていません(ただし、決定論的です)。"postorder"
(以前の"compile"
): 左から右への投稿順序。具体的には、すべての子を左端から順に再帰的にトラバースし、次に直接要素を左端から順にトラバースします。"preorder"
(以前の"naive_link"
): 左から右への事前順序付け。具体的には、直接要素を左から順にトラバースし、次に子を左から順に再帰的にトラバースします。"topological"
(以前は"link"
): ルートからリーフまでのトポロジカル順序。左から右への保証はありません。
2 つの depsets を結合できるのは、両方の depsets の順序が同じ場合、または一方の depsets の順序が "default"
の場合のみです。後者の場合、結果の depset の順序は、もう一方の順序と同じになります。
Depset には重複する値が含まれている場合がありますが、反復処理(to_list()
を使用)の際に抑制されます。重複は順序付けのセマンティクスに影響する可能性があります。
メンバー
to_list
list depset.to_list()
"default"
順序付き depsets と、親 depset の順序と異なる順序を持つ子 depset の要素についても、順序は指定されません。リストはコピーです。リストを変更しても depset には影響しません。その逆も同様です。