デプセット

問題を報告 ソースを表示

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

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

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

order パラメータは、デプセットをイテラブルに変換するために走査の種類を決定します。有効な値は次の 4 つです。

  • "default"(旧 "stable"): 順序は未指定(ただし確定的)です。
  • "postorder"(旧 "compile"): 左から右への注文後です。正確には、これはすべての子を左端から再帰し、直接要素は左から最初に走査されます。
  • "preorder"(旧 "naive_link"): 左から右への予約購入。正確には、これは最初に左にある直接要素を走査し、次に左端から子を再帰的に走査します。
  • "topological"(旧 "link"): ルートからリーフまでのトポロジ順。左から右への位置付けは保証されません。

2 つのデプトが統合される可能性があるのは、両方のデプセットが同じ順序である場合、または一方のデパートが "default" 順である場合に限られます。後者の場合、結果の Depset の順序はもう一方の順序と同じになります。

依存関係には重複する値が含まれることがありますが、反復処理により to_list() を使用してそれらの値を抑制します。重複により、順序処理のセマンティクスが妨げられる可能性があります。

メンバー

to_list

list depset.to_list()

重複しない要素のリストを、デプセットのトラバーサル順で返します。依存関係に複数回追加された要素では、順序は指定されていない(ただし確定的)ことに注意してください。順序が指定された "default" の依存関係と、親依存関係の順序と異なる子依存関係の要素にも、順序が指定されていません。このリストはコピーです。変更しても、差分には影響しません。その逆も同様です。