Как заменить/сбросить значение элемента в массиве TCL?

Скажем, у меня есть массив в TCL, и я хочу изменить значение элемента, у которого есть ключ, например "First_elem". Как я могу это сделать?


person Narek    schedule 06.04.2011    source источник


Ответы (1)


Просто установите элемент массива, как и любую другую переменную: set myArray(key) "value"

Вот более полный пример:

array set myArray {
    key1 1234
    key2 5678
}

echo $myArray(key1)
set myArray(key1) "test"   // Change an existing element
set myArray(key3) "hello"  // Add a new element
echo $myArray(key1)
person überjesus    schedule 06.04.2011
comment
Хорошо, но если это список (значение), могу ли я изменить один элемент в этом списке, не касаясь других элементов списка? - person Narek; 06.04.2011
comment
Вы можете сделать это с помощью функции lreplace (заменить элемент в списке). Это заменит второй элемент списка значения key1 в моем примере (значение, конечно, должно быть списком, которого нет в моем примере): set myArray(key1) [lreplace $myArray(key1) 1 1 "hello"] - person überjesus; 06.04.2011
comment
Вместо 'lreplace можно использовать lset. т.е. lset myArray(key1) 1 "new value". - person GrAnd; 06.04.2011
comment
echo? Сними на минутку свою ракушку ;) Или interp alias "" echo "" puts - person glenn jackman; 06.04.2011