TCL:如何创建和使用名称包含花括号的变量?

TCL:如何创建和使用名称包含花括号的变量?,tcl,special-characters,Tcl,Special Characters,我的程序中的一些变量名是由用户的输入构造的,因此它们可能包含任何符号。一些符号被解释器视为特殊符号,例如$,#,…。通过在构造变量名的开头加上开括号,在末尾加上闭括号,解决了有关符号的问题。但现在,当变量名包含卷曲的右大括号时,另一个问题出现了 set "a{}" text puts $a{} puts ${a{}} 这两个人都不在这里工作。如何打印变量a{}的值,以及是否有任何已知的方法来处理TCL中的特殊符号?来自: 请注意,变量可能包含上面列出的字符序列以外的字符序列,但在这种情况下,

我的程序中的一些变量名是由用户的输入构造的,因此它们可能包含任何符号。一些符号被解释器视为特殊符号,例如
$,#,…
。通过在构造变量名的开头加上开括号,在末尾加上闭括号,解决了有关符号的问题。但现在,当变量名包含卷曲的右大括号时,另一个问题出现了

set "a{}" text

puts $a{}
puts ${a{}}
这两个人都不在这里工作。如何打印变量
a{}
的值,以及是否有任何已知的方法来处理TCL中的特殊符号?

来自:

请注意,变量可能包含上面列出的字符序列以外的字符序列,但在这种情况下,必须使用其他机制来访问它们(例如,通过命令的单参数形式)

使用
set

puts [set "a{}"]
$
的方式是,
设置
不是来自:

请注意,变量可能包含上面列出的字符序列以外的字符序列,但在这种情况下,必须使用其他机制来访问它们(例如,通过命令的单参数形式)

使用
set

puts [set "a{}"]

$
的方法是,
set
不是

@JohannesKuhn,将其作为答案发布注意,如果您经常这样做,这可能意味着您应该使用包含名称的“奇怪字符”作为数组元素的名称<代码>集元(a{})文本;放置$ary(a{})@JohannesKuhn,作为回答请注意,如果您经常这样做,这可能意味着您应该使用包含名称的“奇怪字符”作为数组元素的名称<代码>集元(a{})文本;放置$ary(a{})