2010-07-22 40 views
4

在Python,我可以写的东西,如:如何在Tcl中将列表解压缩为变量?

my_list = [4, 7, "test"] 
a, b, c = my_list 

a之后是4b7c"test"因为在最后一行的解压缩操作。我能做类似Tcl的最后一行吗?为了使它更清楚,我想这样的事情:

set my_list {4 7 test} 
setfromlist $mylist a b c 

(即setfromlist是我要找的命令。)

回答

14

你想L将:

% lassign 
wrong # args: should be "lassign list ?varName ...?" 
% lassign {1 2 3} a b c 
% set a 
1 
% set b 
2 
% set c 
3 

如果您'使用老版本的Tcl(没有lassign),你可以使用foreach来实现相同的结果

foreach {a b c} {1 2 3} {break} 
+0

lassign在Tcl 8.5上标准化。如果你使用的是Tcl 8.4: package require Tclx – 2010-07-26 15:14:20

+0

或者,如果你不想要所有的Tclx,你可以编写一个使用foreach实现相同功能的lassign版本(foreach通常用于此目的之前到增加lassign) – RHSeeger 2010-08-19 15:14:36