En respuesta al comentario de Toddius Zho, he visto un par de preguntas (y ellos mi auto tenía) por qué llaves se usan cuando el uso de variables, por ejemplo, $ {var}
En TCL una variable escalar estándar puede estar compuesta por cualquier carácter. Sin embargo, el operador de la sustitución de variables "$" supone que está utilizando caracteres alfanuméricos y guiones bajos (más separadores de espacio de nombre "::")
lo tanto, si se establece una variable con un carácter no alfanumérico, como "!", TCL error al intentar sustituir la variable.
% set myvar! 123
123
% puts $myvar!
can't read "myvar": no such variable
El uso de llaves al operador sustitución no hace error:
% set myvar! 123
123
%puts ${myvar!}
123
Esto se debe a TCL no realiza la sustitución/interpolación sobre nada definido entre llaves.
http://www.tcl.tk/man/tcl8.5/TclCmd/Tcl.htm
En caso de que no estaba claro en la respuesta, la interpolación significa que la sustitución va a suceder. Si tiene una variable llamada myvar = "some string", {a $ myvar b} dará como resultado la cadena literal "a $ myvar b" ... mientras que "a $ myvar b" dará como resultado la cadena literal "a" alguna cadena b " – RHSeeger
gracias, creo que lo entiendo ahora. tendré que usar tcl un poco más para entenderlo completamente, supongo. –
Me gusta decir "solo necesitas usar llaves cuando necesites usar llaves", lo que significa que, a diferencia de la mayoría de los idiomas, las llaves son * solo * para las comillas. No hay nada en el lenguaje que requiera el uso de llaves. Están citando el mecanismo que puede elegir usar o no. Por supuesto, hay mejores prácticas que dicen cuándo es prudente usarlas ... –