Замена имени переменной TCL


У меня есть несколько списков:

AllMaxMins_LC1 AllMaxMins_LC2 AllMaxMins_LC3 и так далее

Теперь я хочу пройти через каждый список следующим образом:

for {set i 1} {$i < 10} {incr i} {
   foreach SubList $AllMaxMins_LC$i { 
   # do something
    }
}

Я знаю, что способ, которым я пытаюсь это сделать, не работает, но как я могу добиться такой замены правильно?

2 2

2 ответа:

Например, вы можете использовать команду set без второго аргумента для доступа к содержимому переменных AllMaxMins_LC$i. Например:

for {set i 1} {$i < 10} {incr i} {
   set SubList [set AllMaxMins_LC$i]
   foreach element $SubList { 
     # do something
   }
}

Я рад, что вы нашли ответ, который решит вашу проблему.

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

Также непонятно, почему у вас есть for {set i 0} {$i < 10} {incr i} цикл вокруг всего.

Если у вас действительно есть три списка, каждый из которых содержит 10 элементов, вы можете захотеть обрабатывать первый элемент из каждого списка, затем второй, затем третий и т. д. В этом случае хорошей ставкой будет

foreach maxMin_1 $AllMaxMIns_LC1 maxMin_2 $allMaxMins_LC2 maxMin_3 $allMaxMins_LC3 {
    # do somthing
}