tcl中dict语法中的{*}是什么意思

mhh*_*hai 1 dictionary tcl

在tcl中,有一些我不熟悉的代码习惯用法,dict creat中的{*}是什么意思?

namespace eval ::resistorColor {
    variable colors [dict create {*}{
        black   0
        brown   1
        red     2
        orange  3
        yellow  4
        green   5
        blue    6
        violet  7
        grey    8
        white   9
    }]
}
Run Code Online (Sandbox Code Playgroud)

Col*_*eod 5

这不是一个习语,它是 Tcl 语法的基本规则之一: https: //www.tcl.tk/man/tcl/TclCmd/Tcl.html#M9

此处使用它是因为字典的键/值对已被编写为包含在 中的列表{},这允许将它们编写在单独的行上。但该dict create命令不需要单个列表,它希望将键和值作为单独的参数传递。So{*}用于将该列表拆分为命令的单独参数dict

另一种方法是使用反斜杠在多行上继续 dict 的参数列表:

variable colors [dict create \
    black   0 \
    brown   1 \
    red     2 \
    ...etc...
Run Code Online (Sandbox Code Playgroud)