Я новичок в TCL. Я нашел такое присвоение переменной:

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

Я знаю, что B1 находится в пространстве имен B0, то есть в пространстве имен C0, а B1 - это массив. Чего я не понимаю, так это синтаксиса B1(A:input:signal)? Можешь остановить меня? Большое спасибо

1
Andrea Spiezia 10 Фев 2021 в 16:33

1 ответ

Лучший ответ

Имена элемента массива - это произвольные строки, которые могут иметь любую внутреннюю структуру, которую вы и / или приложение, которое они должны иметь. Заключение круглых скобок в имена элементов может быть немного неудобным с точки зрения синтаксиса, но это всего лишь синтаксическая вещь (синтаксис $ немного ограничивает то, что поддерживает модель переменных Tcl); если само имя элемента взято из переменной, тогда это действительно может быть что угодно. Например:

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

Вы даже можете использовать пробелы или двоичные данные в качестве имен элементов.

В вашем случае имя массива - ::C0::B0::B1 (B1 в пространстве имен ::C0::B0, как вы знаете), а имя элемента - A:input:signal; внутренние двоеточия в имени элемента не имеют особого значения для Tcl, не больше, чем A или input. Другой код, смотрящий на этот массив, конечно, может иметь другие представления об этом.

0
Donal Fellows 10 Фев 2021 в 13:47