In risposta al commento di Toddius Zho, ho visto un paio di domande (e la mia auto aveva) il motivo per cui le parentesi graffe vengono utilizzati quando si utilizza le variabili per esempio $ {var}
In TCL una variabile scalare standard può essere composta da qualsiasi carattere. Tuttavia l'operatore di sostituzione variabile "$" presuppone che si utilizzino caratteri alfanumerici e caratteri di sottolineatura (più separatori di spazio dei nomi "::")
Quindi se una variabile è impostata con un carattere non alfanumerico, ad esempio "!", TCL errore quando si tenta di sostituire la variabile.
% set myvar! 123
123
% puts $myvar!
can't read "myvar": no such variable
Uso parentesi graffe dell'operatore sostituzione non fa errore:
% set myvar! 123
123
%puts ${myvar!}
123
Questo perché TCL non esegue la sostituzione/interpolazione su nulla definito tra parentesi graffe.
http://www.tcl.tk/man/tcl8.5/TclCmd/Tcl.htm
Nel caso non era chiaro nella risposta, interpolazione significa che la sostituzione avverrà. Se hai una variabile denominata myvar = "qualche stringa", allora {a $ myvar b} risulterà nella stringa letterale "a $ myvar b" ... mentre "a $ myvar b" risulterà nella stringa letterale "a qualche stringa b " – RHSeeger
grazie, penso di averlo capito ora. dovrò usare tcl un po 'di più per capire a fondo credo. –
Mi piace dire "basta usare le parentesi graffe quando è necessario utilizzare le parentesi graffe", il che significa che - a differenza della maggior parte delle lingue - le parentesi graffe sono * solo * per le citazioni. Non c'è niente nella lingua che mai richiede l'utilizzo di parentesi graffe. Stanno citando un meccanismo che puoi scegliere di usare o meno. Certo, ci sono buone pratiche che dicono quando è saggio usarle ... –