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