tcl - resueltos - Entender el uso de llaves
operaciones con parentesis corchetes y llaves (4)
Estoy aprendiendo Tcl / Tk y estoy confundido sobre el uso de llaves en tcl.
¡A mí me parece que se usa tanto para indicar el alcance como para declarar cadenas! ¿Es este un error (o característica)?
¿Es mi interpretación correcta?
En respuesta al comentario de Toddius Zho, he visto algunas preguntas (y me las hice yo misma) por qué se usan llaves cuando se usan variables, por ejemplo, $ {var}
En TCL, una variable escalar estándar puede estar compuesta de cualquier carácter. Sin embargo, el operador de sustitución de variables "$" asume que está utilizando caracteres alfanuméricos y guiones bajos (más los separadores de espacio de nombres "::")
Por lo tanto, si una variable se establece con un carácter no alfanumérico, como "!", TCL producirá un error al intentar sustituir la variable.
% set myvar! 123
123
% puts $myvar!
can''t read "myvar": no such variable
Usando llaves, el operador de sustitución no se equivoca:
% set myvar! 123
123
%puts ${myvar!}
123
Esto se debe a que TCL no realiza la sustitución / interpolación en nada definido entre llaves.
En una palabra,
- Las llaves de Tcl actúan como comillas simples de sh: palabras de grupo (y líneas) sin interpolación.
- Las comillas dobles de Tcl actúan como comillas dobles de sh, permitiendo la interpolación.
El hecho de que utilice llaves en una definición de proceso no es obligatorio. Es la forma más conveniente de pasar un guión como argumento a proc sin interpolar.
Estos son equivalentes
proc add3 {a b c} {
return [expr {$a + $b + $c}]
}
y
proc add3_weird [list a b c] "return /[expr {/[set a] + /[set b] + /[set c]}]"
Una vez que internalice la cotización de Tcl, se dará cuenta de lo verdaderamente flexible que puede ser Tcl.
llaves que agrupan palabras para convertirse en argumentos. Usted puede encontrar un montón de cosas tcl en Internet por Google. Aquí hay una intro
man n tcl
¡Esa es la página del manual para el intérprete de Tcl! Leerlo ¡Leelo de nuevo! Incluso podrías considerar ir a un lugar tranquilo y leerlo en voz alta. Esto te impedirá leer demasiado rápido. Cada letra cuenta.
Una vez que se encuentre en "citando el infierno", vuelva a este documento y léalo nuevamente.
Hay una versión en línea en: http://www.tcl.tk/man/tcl8.5/TclCmd/Tcl.htm