Depset

問題を報告 ソースを表示

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

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()

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