Tcl 取消引用:如何取消引用字符串中的变量

Tcl dereferencing: How to dereference a variable inside a string

我有以下情况:

% set a 20
20
% set in_word "Value of a is $a"
Value of a is $a

现在,我想通过对变量 in_word.

进行操作来打印(或将此字符串设置为另一个变量),Value of a is 20

essay which is also linked in Tclers wik here 中介绍了类似的(可能是更简单的情况)取消引用。那里涵盖的案例是这种性质的:

% set x y
y
% set y 20
20
% set [set x]
20
%

这种情况与我的问题相似,因为我有一个字符串,其中包含一个变量,而不是一个直接变量。我不确定如何将这种情况下的想法应用到我的问题中。我尝试使用 eval 但我没有得到我想要的效果。

subst 命令就是您要找的:

puts [subst $in_word]

如果您在 "" 中放置任何内容,它会解释 $args。

% set a 20
20

% set in_word "Value of a is $a"
Value of a is 20