¿Cómo concatenar concisamente cadenas en Tcl?
-
07-07-2019 - |
Pregunta
Puedo concatenar fácilmente dos variables, foo y bar, como sigue en Tcl: " $ {foo} $ {bar} " ;.
Sin embargo, si no quiero poner un resultado intermedio en una variable, ¿cómo puedo concatenar fácilmente los resultados de llamar a algún proceso?
Mano larga, esto se escribiría:
set foo [myFoo $arg]
set bar [myBar $arg]
set result "${foo}${bar}"
¿Hay alguna forma de crear resultados sin introducir las variables temporales foo y bar?
Hacer esto es incorrecto para mis propósitos:
concat [myFoo $arg] [myBar $arg]
ya que introduce un espacio entre los dos resultados (para fines de lista) si no existe uno.
Parece que 'string concat' sería lo que quiero, pero no parece estar en mi versión del intérprete Tcl.
string concat [myFoo $arg] [myBar $arg]
String concat se escribe aquí:
Solución
Puede incorporar comandos dentro de una cadena entre comillas dobles sin la necesidad de una variable temporal:
set result "[myFoo $arg][myBar $arg]"
Otros consejos
Si está haciendo esto muchas veces, en un bucle o separado por algún código intermedio, también puede considerar:
set result ""
append result [myFoo $arg]
append result [myBar $arg]
append result [myBaz $arg]
solo escríbelo como una palabra sin espacios adicionales:
[myFoo $arg][myBar $arg]
Tcl ve esto como una sola palabra después de la sustitución, independientemente del resultado de los dos subcomandos.