TCL использует переменную для генерации varaible и использует переменную для открытия / закрытия файла - PullRequest
0 голосов
/ 26 марта 2020

В качестве простого примера я хочу просто открыть или закрыть файлы и использовать переменную для создания другой переменной. В PERL это довольно легко, но я не могу понять это в TCL

set gsrs ""
lappend gsrs "sir"
lappend gsrs "dir"

foreach gsr $gsrs {
  set file "sdrv/icc/instance_toggle_overwrite.$gsr.txt"
  puts "*** I : Generating $file"

  set tempGSR gsr
  puts "$$tempGSR" # would like output to be value of $gsr
  set $gsr [open $file "w"] # normally you would not use a variable here for filename setting
  close $$gsr
}

1 Ответ

2 голосов
/ 26 марта 2020

Двойная разыменование обычно не рекомендуется, так как это приводит к сложному коду, который довольно сложно поддерживать. Однако, если вы настаиваете на этом, используйте set с одним аргументом, чтобы сделать это:

puts [set $tempGSR]

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...