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

Colon and array and namespace in TCL

我是TCL新手。 我找到了这样的变量赋值:

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

我知道B1在B0的namespace中,也就是在C0的namespace中,B1是一个数组。 我不明白的是语法 B1(A:input:signal)? 你能阻止我吗? 非常感谢

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

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

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

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