не могу понять синтаксис [lsort [:: имена массивов my_array *, dut_inst]] - PullRequest
0 голосов
/ 17 марта 2020

Я не могу понять это:

[lsort [::array names my_array *,dut_inst]]

Что означает *? Что означает dut_inst?

Где я могу прочитать об этом?

Давайте предположим:

my_array(0)=0
my_array(1)=1
my_array(2)=2

Что я получу?

1 Ответ

2 голосов
/ 17 марта 2020

Этот необязательный аргумент array names является необязательным шаблоном глобуса , который используется для фильтрации результатов и возврата к подмножеству. Правила его работы описаны в документации для string match, но в случае *,dut_inst у нас есть две части:

  1. * соответствует любое количество символов.
  2. ,dut_inst является буквальным (поскольку ни один из символов в нем не является специальным в правилах string match).

effect - вернуть список всех имен элементов, имена которых оканчиваются на ,dut_inst. С вашими примерами данных вы получите пустой список. С этими примерами данных:

my_array(foo,bar)=1
my_array(boo,dut_inst)=2
my_array(dut_inst,grill)=3
my_array(abc,dut_inst,def)=4
my_array(pqr,dut_inst)=5

Вы получите этот вывод (при условии, что lsort есть; Tcl не не гарантирует порядок итерации массива): boo,dut_inst pqr,dut_inst

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...