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

标签 arrays namespaces tcl

我是 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 没有特殊意义,只不过是 Ainput做。当然,查看该数组的其他代码可能对此有不同的想法。

关于arrays - TCL 中的冒号和数组和命名空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66137891/

相关文章:

javascript - 查找数组项的最长长度 - JS

grails - 访问服务中的标签库

c++ - C++中的 namespace 搜索

timestamp - 在 UTC 时间戳上加/减一秒

tcl - 实时 TCL 执行输出

c++ - 使用函数和数组从文件中读取和打印数据

javascript - 如何创建二维数组来推送不同矩形的值

c - 在C中将字符串拆分为数组

c++ - 为什么 "using namespace std;"被认为是不好的做法?

scripting - 期望-根据行和列从屏幕区域获取变量