Tcl 使用一个列表作为多变量,例如格式参数

Tcl 使用一个列表作为多变量,例如格式参数,tcl,Tcl,在Tcl 我知道它不正确,它将返回错误: 论据不足 那么如何纠正呢?您可以使用(从Tcl 8.5开始): 在以前的版本中,您必须使用eval,这是不推荐的 set f "%-3s %-3s %-3s" set t {"aaa" "bbb" "ccc"} puts [format $f {*}$t] 由于格式的说明符和参数的数量是固定的,为什么不使用: 通常,当说明符的数量以及参数多少是动态的时,扩展运算符{*}是有目的的。但是在静态情况下,当使用lassign时,您将得到一个更健壮的脚本。在

在Tcl

我知道它不正确,它将返回错误:

论据不足

那么如何纠正呢?

您可以使用(从Tcl 8.5开始):


在以前的版本中,您必须使用eval,这是不推荐的

set f "%-3s %-3s %-3s"
set t {"aaa" "bbb" "ccc"}
puts [format $f {*}$t]

由于
格式
的说明符和参数的数量是固定的,为什么不使用:

通常,当说明符的数量以及参数多少是动态的时,扩展运算符
{*}
是有目的的。但是在静态情况下,当使用
lassign
时,您将得到一个更健壮的脚本。在
t
中描绘列表的大小变化,而
format
只需要三个值参数

set f "%-3s %-3s %-3s"
set t {"aaa" "bbb" "ccc"}
puts [format $f {*}$t]
puts [eval format \$f $t]
% lassign $t v1 v2 v3
% puts [format $f $v1 $v2 $v3]
aaa bbb ccc