tcl:如何使用变量的值来创建新变量

Jef*_*f C 4 tcl

这是我正在尝试做的一个例子.

set t SNS
set ${t}_top  [commands that return value]
Run Code Online (Sandbox Code Playgroud)

想要将信息存储在$ {t} _top

puts “${t}_top”
? SNS_top  (really want the data stored there?)
Run Code Online (Sandbox Code Playgroud)

以为是:$ {{$ t} _top},也许那是perl但{}里面的{}不起作用.

Bry*_*ley 7

关于Tcl的一个非常有趣的事情是,您可以动态创建变量名称,就像您在发布的问题中所做的那样.但是,这使编写变得棘手并使您的代码难以理解.

而不是试图弄清楚如何做等价的$ {{$ t} _top},完全避免这个问题可能更好.您可以使用关联数组来完成此操作.

例如,而不是这样:

set t SNS
set ${t}_top  [commands that return value]
...
puts [set ${t}_top]
Run Code Online (Sandbox Code Playgroud)

做这个:

set t SNS
set top($t) [commands that return value]
...
puts $top($t)
Run Code Online (Sandbox Code Playgroud)

大多数人都同意后一个例子更具可读性.