语法

有时你所拥有的是一个列表,但是你希望将列表中的项目传递给要求将每个项目作为单独的参数。例如:winfo children 命令返回一个窗口列表,但 destroy 命令只接受一系列窗口名称参数。

set alpha [winfo children .]
# => .a .b .c
destroy $alpha
# (no response, no windows are destroyed)

解决方案是使用 {*} 语法:

destroy {*}[winfo children .]

要么

destroy {*}$alpha

{*} 语法的作用是获取以下值(中间没有空格!)并将该值中的项拼接到命令行中,就好像它们是单独的参数一样。

如果以下值是空列表,则不会拼接任何内容:

puts [list a b {*}{} c d]
# => a b c d

如果有一个或多个项目,则插入它们:

puts [list a b {*}{1 2 3} c d]
# => a b 1 2 3 c d