Tcl列表中的变量替换

斯科拉达

我正在尝试替换列表中的变量:

% set a 1  
1  
% set b {1 $a}  
1 $a  
%  
% set a 1  
1  
% set b [list 1 $a]  
1 1  

当我使用花括号{}来定义列表时,变量'a'不会被其值替换,但在使用list会被替换

使用使用定义的列表时,如何替换变量的值{}

彼得·勒维林
% set a 1
1
% subst {1 $a}
1 1
% set b [subst {1 $a}]
1 1

但是大多数Tcl:ers实际上更喜欢list在创建带有替换的列表值时使用,例如在第二次尝试中:

% set b [list 1 $a]

原因之一是subst不会在值中保留列表结构:

% set a {a b}
a b
% set b [subst {1 $a}]
1 a b
% set b [list 1 $a]
1 {a b}

另一种可能性是使用双引号而不是大括号。这也不会保留列表结构。

% set b "1 $a"
1 a b

文档:listsetsubstTcl语言语法摘要

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章