Depset

問題を報告 ソースを表示 ナイトリー · 7.4 . 7.3 · 7.2 · 7.1 · 7.0 · 6.5

効率的なマージ オペレーションをサポートし、定義された走査順序を持つ特殊なデータ構造。ルールとアスペクトの推移的依存関係からデータを集約するためによく使用されます。詳しくはこちらをご覧ください。

depset の要素はハッシュ可能で、すべて同じ型(組み込みの type(x) 関数で定義されている型)である必要がありますが、depset は単なるハッシュセットではなく、高速なメンバーシップ テストはサポートしていません。一般的なセット データ型が必要な場合は、すべてのキーが True にマッピングされるディクショナリを使用して、セットをシミュレートできます。

Depset は不変です。コンストラクタ関数を使用して作成し、transitive 引数で他のデプセットとマージまたは拡張する必要があります。

order パラメータは、depset をイテラブルに変換するために実行される走査の種類を決定します。指定できる値は次の 4 つです。

  • "default"(旧 "stable"): 順序が指定されていません(ただし確定的)。
  • "postorder"(旧 "compile"): 左から右の投稿順序。具体的には、すべての子を左から右に再帰的に走査し、次に直接要素を左から右に走査します。
  • "preorder"(旧 "naive_link"): 左から右へのプリオーダー。具体的には、直接要素を左から右に順に走査し、その後、左から右に順に子要素を再帰的に走査します。
  • "topological"(旧 "link"): ルートからリーフまでのトポロジ順序。左から右への保証はありません。

2 つの depset を統合できるのは、両方の depset の順序が同じか、一方の depset の順序が "default" の場合のみです。後者の場合、結果の depset の順序は他方の順序と同じになります。

Depset には重複する値を含めることができますが、これらの値は(to_list() を使用して)反復処理時に抑制されます。重複する値は順序付けのセマンティクスを妨げる可能性があります。

メンバー

to_list

list depset.to_list()

重複のない要素のリストを、依存関係の走査順序で返します。depset に複数回追加された要素については、順序は指定されませんが、確定的です。また、"default" 順の Depset や、親 Depset の順序と異なる子 Depset の要素の場合も、順序は指定されません。リストはコピーです。変更しても depset には影響しません。逆も同様です。