Вы не создали массив. Вы создали набор переменных с общим префиксом «defer_req» и числовым суффиксом. Как указано в части руководства Tcl variable syntax, адресация массива использует круглые скобки. Таким образом, ваш оператор присваивания должен быть
set defer_req($i) {}
и в пожилом код, который использует это, вы можете использовать что-то вроде:
puts $defer_req($memberName)
Вы не должны использовать массив - вы можете оставить свой код как это , создавая набор одинаково названных переменных. В этом случае, чтобы использовать значение, которое будет необходимо:
puts [set defer_req$memberName]
который первым запускает набор заявление (часть адреса в фигурных скобках) и расширяющийся $ MemberName в суффикс, создающей полное имя переменной. Затем set command с одним аргументом возвращает значение именованной переменной.
Наивная версия ($ defer_req $ memberName) попытается подставить в значение переменной, называемой defer_req, и объединить ее значение с переменной переменной memberName.