我是 TCL 的初学者。
我发现了一个像这样的变量赋值:
set ::C0::B0::B1(A:input:signal) "P0"
我知道B1在B0的命名空间中,也就是在C0的命名空间中,而B1是一个数组。我不明白的是sintax
B1(A:input:signal)
?你能阻止我吗?
非常感谢
最佳答案
数组元素名称是任意字符串,可以具有您和/或它们具有的应用程序的任何内部结构。将括号放在元素名称中在语法上可能有点笨拙,但这只是一个语法问题($
语法相对于 Tcl 的变量模型支持的内容来说有点限制);如果元素名称本身取自一个变量,那么它真的可以是任何东西。例如:
set foo "a(b)c"
set bar($foo) 123
您甚至可以使用空格或二进制数据作为元素名称。在您的情况下,数组名称是
::C0::B0::B1
(如您所知,B1
在命名空间 ::C0::B0
中)并且元素名称是 A:input:signal
;元素名称中的内部冒号对 Tcl 没有特殊意义,只不过是 A
或 input
做。当然,查看该数组的其他代码可能对此有不同的想法。
关于arrays - TCL 中的冒号和数组和命名空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66137891/