我程序中的一些变量名称是根据用户的输入构造的,因此它们可能包含任何符号。一些符号被解释器视为特殊符号,例如$,#, ...
。通过在构造变量名的开头添加开括号并在其末尾添加闭括号来解决有关该符号的问题。但是,当变量名称包含大括号时,会出现另一个问题。
set "a{}" text
puts $a{}
puts ${a{}}
两个人都没有在这里工作。如何打印变量a{}
的值,是否有任何已知的方法来处理TCL中的特殊符号?
答案 0 :(得分:5)
来自manual:
请注意,变量可能包含上面列出的字符序列,但在这种情况下,必须使用其他机制来访问它们(例如,通过 set 命令的单参数形式)。
使用set
puts [set "a{}"]
$
方式为restricted,set
不是