dict remove также удаляет ключ - PullRequest
0 голосов
/ 08 ноября 2018

Tcl dict remove не ведет себя точно так, как я ожидал. (Я уверен, что это потому, что мои ожидания неверны)

% 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}

Я ожидал, что результат будет:

O1 {C2 child2} O2 {C3 child3}

В чем причина удаления O1 C2?

1 Ответ

0 голосов
/ 08 ноября 2018

Вы, вероятно, ищете dict unset вместо dict remove.

dict unset удалит ключ (и вложенные ключи) со значением (ями), связанными с самым глубоким ключом.

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

dict remove удалит все ключи на первом уровне словаря и все значения под этими ключами:

% 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}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...