У меня есть следующая проблема:квадратные скобки в TCL массивы
set start "input[0]"
set end "output[0]"
set myArray($start,$end,pin) 1
set x "input[0]"
set y "output[0]"
set test [array names myArray $x,$y,pin]
puts "\n$test"
вывод должен быть:
input[0],output[0]
, но результат:
{}
если я:
set test [array names myArray *,*,pin]
puts "\n$test"
выход:
input[0],output[0]
Кроме того, если я заменю []
по {}
ie.input{0},output{0}
исходный код работает.
Может кто-нибудь, пожалуйста, скажите мне, что здесь происходит? Как избежать скобок []
?
Это работает для упомянутого выше случая. У меня есть еще один случай, когда я не могу использовать -точный: 'набор тестов [имен массивов MyArray $ х, $ у, *, длина]' -точная опция не может по понятным причинам здесь. Я не могу обойти квадратные скобки в $ x и $ y и * using -regexp. Любая идея о том, что здесь происходит? – user3119236
@ user3119236 Почему вы вообще используете имена массивов? Мне кажется, что вы делаете что-то не так, и вам нужно сделать шаг назад и подумать, что вы пытаетесь сделать в целом. Возможно, размещение словаря внутри элемента массива было бы более подходящим или, возможно, отображением вещей как своего рода объекта? –
Нас строковая карта, предшествующая всем вхождениям квадратной скобки по косе: set checkname [строка карты {\ [\\\ [\] \\\]} "$ x, $ y, *, length"] set test [array имена myArray $ checkname] – mkostya