디셋

문제 신고 소스 보기 나이틀리 빌드 · 8.4 · 8.3 · 8.2 · 8.1 · 8.0 · 7.6

효율적인 병합 작업을 지원하고 정의된 순회 순서가 있는 특수 데이터 구조입니다. 규칙과 측면에서 전이 종속 항목의 데이터를 누적하는 데 일반적으로 사용됩니다. 자세한 내용은 여기를 참고하세요.

deps의 요소는 해시 가능해야 하고 모두 동일한 유형 (기본 제공 유형(x) 함수로 정의됨)이어야 하지만 deps는 단순한 해시 집합이 아니며 빠른 멤버십 테스트를 지원하지 않습니다. 일반적인 집합 데이터 유형이 필요한 경우 모든 키가 True에 매핑되는 사전을 사용하여 시뮬레이션할 수 있습니다.

deps는 변경할 수 없습니다. 생성자 함수를 사용하여 생성하고 transitive 인수를 통해 다른 depsets와 병합하거나 보강해야 합니다.

order 매개변수는 depset을 반복 가능 객체로 변환하는 데 사용되는 순회 종류를 결정합니다. 가능한 값은 다음과 같습니다.

  • "default" (이전 "stable"): 순서가 지정되지 않았습니다 (하지만 결정적임).
  • "postorder" (이전 "compile"): 왼쪽에서 오른쪽으로 게시물 순서를 지정합니다. 정확히 말하면 모든 하위 요소를 왼쪽부터 먼저 재귀적으로 순회한 다음 직접 요소를 왼쪽부터 먼저 순회합니다.
  • "preorder" (이전 "naive_link"): 왼쪽에서 오른쪽으로 사전 순서 지정 정확히 말하면 이 함수는 직접 요소를 왼쪽부터 순회한 다음 하위 요소를 왼쪽부터 재귀적으로 순회합니다.
  • "topological" (이전 "link"): 루트에서 리프까지의 위상 순서입니다. 왼쪽에서 오른쪽으로의 순서는 보장되지 않습니다.

두 depsets는 두 depsets의 순서가 동일하거나 둘 중 하나의 순서가 "default"인 경우에만 병합할 수 있습니다. 후자의 경우 결과 depset의 순서는 다른 depset의 순서와 동일합니다.

depset에는 중복 값이 포함될 수 있지만 반복 (to_list() 사용) 시에는 억제됩니다. 중복은 순서 지정 의미 체계를 방해할 수 있습니다.

회원

to_list

list depset.to_list()

depsset의 순회 순서대로 중복되지 않은 요소 목록을 반환합니다. deps에 두 번 이상 추가된 요소의 순서는 지정되지 않지만 결정적입니다. 순서는 "default" 순서가 지정된 depsets와 순서가 상위 depset과 다른 하위 depset의 요소에 대해서도 지정되지 않습니다. 목록은 복사본이므로 수정해도 depset에 영향을 미치지 않으며 그 반대의 경우도 마찬가지입니다.