dict remover também exclui chave

votos
1

Tcl de dict removenão se comporta exatamente como eu esperava. (Eu tenho certeza que é porque as minhas expectativas estão incorretas)

% set d [dict create]
% dict set d O1 C1 child1
O1 {C1 child1}
% dict set d O1 C2 child2
O1 {C1 child1 C2 child2}
% dict set d O2 C3 child3
O1 {C1 child1 C2 child2} O2 {C3 child3}
% dict remove $d O1 C1
O2 {C3 child3}

Eu estava esperando que o resultado seja:

O1 {C2 child2} O2 {C3 child3}

Qual é a razão para O1 C2 também ser removido?

Publicado 08/11/2018 em 06:44
fonte usuário
Em outras línguas...                            


1 respostas

votos
0

Você provavelmente está procurando dict unsetem vez de dict remove.

dict unset irá remover uma chave (e as chaves aninhadas) com o valor (s) associado à chave mais profunda.

% dict unset d O1 C1
O1 {C2 child2} O2 {C3 child3}

dict remove irá remover todas as chaves no primeiro nível do dicionário e todos os valores sob essas chaves:

% puts $d
O1 {C1 child1 C2 child2} O2 {C3 child3}
% dict set d O3 C4 child4
O1 {C1 child1 C2 child2} O2 {C3 child3} O3 {C4 child4}
% dict remove $d O1 O2
O3 {C4 child4}
Respondeu 08/11/2018 em 06:54
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more