sko*_*ada 3 list tcl variable-substitution
我正在尝试替换列表中的变量:
% set a 1
1
% set b {1 $a}
1 $a
%
% set a 1
1
% set b [list 1 $a]
1 1
Run Code Online (Sandbox Code Playgroud)
当我使用花括号{}
来定义列表时,变量 'a' 不会被替换为它的值,但在使用list
它的情况下会替换。
使用定义的列表时如何替换变量的值{}
?
% set a 1
1
% subst {1 $a}
1 1
% set b [subst {1 $a}]
1 1
Run Code Online (Sandbox Code Playgroud)
但是大多数 Tcl:ers 实际上更喜欢list
在创建带有替换的列表值时使用,就像在你的第二次尝试中一样:
% set b [list 1 $a]
Run Code Online (Sandbox Code Playgroud)
原因之一是subst
不会在值中保留列表结构:
% set a {a b}
a b
% set b [subst {1 $a}]
1 a b
% set b [list 1 $a]
1 {a b}
Run Code Online (Sandbox Code Playgroud)
另一种可能性是使用双引号而不是大括号;这也不会保留列表结构。
% set b "1 $a"
1 a b
Run Code Online (Sandbox Code Playgroud)
文档: list、 set、 subst、 Tcl 语言语法摘要