语法
有时你所拥有的是一个列表,但是你希望将列表中的项目传递给要求将每个项目作为单独的参数。例如: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