TCL中的冒号、数组和命名空间



我是TCL的初学者。我发现了一个这样的变量赋值:

set ::C0::B0::B1(A:input:signal)  "P0"

我知道B1在B0的命名空间中,也就是在C0的命名空间中,B1是一个数组。我不明白的是sinxB1(A:input:signal)?你能帮我吗?谢谢你。

数组元素名称是任意字符串,可以具有您和/或应用程序希望具有的任何内部结构。将圆括号放在元素名中可能在语法上有点尴尬,但这只是语法问题($语法相对于Tcl的变量模型所支持的有一点限制);如果元素名本身取自一个变量,那么它实际上可以是任何东西。例如:

set foo "a(b)c"
set bar($foo) 123

您甚至可以使用空格或二进制数据作为元素名。

在您的示例中,数组名称为::C0::B0::B1(如您所知,名称空间::C0::B0中的B1),元素名称为A:input:signal;元素名称中的内部冒号对Tcl没有特殊意义,就像Ainput一样。当然,查看该数组的其他代码可能对此有不同的想法。

最新更新