Uma estrutura de dados especializada que oferece suporte a operações de mesclagem eficientes e tem uma ordem de travessia definida. Geralmente usado para acumular dados de dependências transitivas em regras e aspectos. Clique aqui para mais informações.
Os elementos de um depset precisam ser passíveis de hash e todos do mesmo tipo (conforme definido pela função integrada type(x), mas as dependências não são simplesmente conjuntos de hash e não são compatíveis com testes rápidos de associação. Se você precisar de um tipo de dados geral, poderá simular um usando um dicionário em que todas as chaves sejam mapeadas para True
.
As dependências são imutáveis. Elas precisam ser criadas usando a função de construtor e mescladas ou aumentadas com outras dependências pelo argumento transitive
.
O parâmetro order
determina o tipo de travessia feito para converter o conjunto em um iterável. Há quatro valores possíveis:
"default"
(anteriormente"stable"
): a ordem não é especificada, mas é determinista."postorder"
(antigo"compile"
): uma pós-ordem da esquerda para a direita. Exatamente, isso transferirá de forma recursiva todos os filhos mais à esquerda primeiro e, em seguida, os elementos diretos mais à esquerda primeiro."preorder"
(antigo"naive_link"
): uma encomenda da esquerda para a direita. Exatamente, isso transferirá os elementos diretos mais à esquerda primeiro e, em seguida, de maneira recursiva, os filhos mais à esquerda primeiro."topological"
(antigo"link"
): uma ordem topológica da raiz até as folhas. Não há garantias da esquerda para a direita.
Dois depssets só poderão ser mesclados se ambos tiverem a mesma ordem ou se um deles tiver a ordem "default"
. No último caso, a ordem do dispositivo resultante será a mesma que a do outro.
As dependências podem conter valores duplicados, mas eles serão suprimidos ao iterar (usando to_list()
). Cópias podem interferir na semântica de ordenação.
Membros
to_list
list depset.to_list()
"default"
e para elementos de dependências filhos em que a ordem é diferente da ordem do componente pai. A lista é uma cópia. modificá-la não afeta o dispositivo e vice-versa.