В ответ на комментарий Toddius Жо, я видел несколько вопросов (и у них мой сам), почему фигурные скобки используются при использовании переменных, например, $ {var}
В TCL стандартная скалярная переменная может состоять из любого символа. Однако оператор переменной замещения «$» предполагает, что вы используете буквенно-цифровые символы и символы подчеркивания (плюс разделители пространств имен «::»)
Так что если переменная задана с не буквенно-цифровым символом, например, «!», TCL будет ошибка при попытке заменить переменную.
% set myvar! 123
123
% puts $myvar!
can't read "myvar": no such variable
Использование фигурных скобок оператора подстановки не ошибка:
% set myvar! 123
123
%puts ${myvar!}
123
Это происходит потому, что TCL не выполняет замену/интерполяции на что-либо определенное в фигурные скобки.
http://www.tcl.tk/man/tcl8.5/TclCmd/Tcl.htm
В случае, если это не было ясно, в ответ, интерполяция означает, что замена будет происходить. Если у вас есть переменная с именем myvar = "some string", тогда {a $ myvar b} приведет к строковому литералу «a $ myvar b» ... тогда как «a $ myvar b» приведет к строковому литералу «a некоторые строки b " – RHSeeger
спасибо, я думаю, я его сейчас. придется использовать tcl немного больше, чтобы полностью понять. –
Мне нравится говорить «вам нужно использовать только фигурные скобки, когда вам нужно использовать фигурные скобки», что означает, что - в отличие от большинства языков - фигурные скобки - * только * для цитирования. В языке нет ничего, что когда-либо требовало бы использования фигурных скобок. Это механизм цитирования, который вы можете использовать или нет. Конечно, есть лучшие практики, которые говорят, когда разумно их использовать ... –