Как объединить 2 имени переменной в 1 имя в TCL? - PullRequest
2 голосов
/ 16 марта 2012

У меня есть группа переменных, которые представляют собой списки байтов, которые я пытаюсь найти.

set foo0 [list 0 1 2]
set foo1 [list 3 4 5]
set foo2 [list 6 7 8]
set fooCount 3

for { set z 0 } { $z<$fooCount} { incr z } { 
    tbf str "foo$z: foo$z"
}

Я бы хотел распечатать это:

foo0: 0 1 2
foo1: 3 4 5
foo2: 6 7 8

Но я получаю:

foo0: foo0
foo1: foo1
foo2: foo2

Я попытался изменить строку печати на

tbf str "foo$z: $foo$z"

Но тогда я получаю сообщение об ошибке, что нет переменной foo. Я также попытался скопировать все переменные foo в fooList, но опять же, похоже, я не получаю содержимое.

Ответы [ 2 ]

6 голосов
/ 16 марта 2012

Попробуйте это:

tbf str "foo$z: [set foo$z]"

Команда set возвращает значение этого токена, которое равно foo0, foo1 и т. Д.

0 голосов
/ 16 марта 2012

Используя массивы, это тоже легко:

set foo(0) [list 0 1 2]
set foo(1) [list 3 4 5]
set foo(2) [list 6 7 8]
set fooCount 3

for { set z 0 } { $z<$fooCount} { incr z } { 
    tbf str "foo($z): $foo($z)"
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...