如何在Tcl中将列表解压为变量?

如何在Tcl中将列表解压为变量?,tcl,Tcl,在Python中,我可以编写如下内容: my_list = [4, 7, "test"] a, b, c = my_list 在这之后,a是4,b是7,c是“测试”,因为最后一行的解包操作。我可以做一些像Tcl的最后一行吗?更清楚地说,我想要这样的东西: set my_list {4 7 test} setfromlist $mylist a b c (即,setfromlist将是我正在寻找的命令。)您想要lassign: % lassign wrong # args: should be

在Python中,我可以编写如下内容:

my_list = [4, 7, "test"]
a, b, c = my_list
在这之后,
a
4
b
7
c
“测试”
,因为最后一行的解包操作。我可以做一些像Tcl的最后一行吗?更清楚地说,我想要这样的东西:

set my_list {4 7 test}
setfromlist $mylist a b c
(即,
setfromlist
将是我正在寻找的命令。)

您想要lassign:

% 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}

lassign是Tcl 8.5的标准配置。如果您使用的是Tcl 8.4:package require TclxOr,如果您不想要所有的Tclx,您可以编写一个版本的lassign,使用foreach实现相同的功能(foreach在添加lassign之前通常用于此目的)