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í:

¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top