Comment concaténer de manière concaténée des chaînes dans Tcl?

Je peux facilement concaténer deux variables, foo et bar, comme suit en Tcl: "${foo}${bar}".

Cependant, si Je ne veux pas mettre un résultat intermédiaire dans une variable, Comment puis-je facilement concaténer les résultats de l'appel d'un proc?

Main longue ceci serait écrit:

set foo [myFoo $arg]
set bar [myBar $arg]
set result "${foo}${bar}"

Existe-t-il un moyen de créer un résultat sans introduire les variables temporaires foo et bar?

Faire ceci est incorrect pour mes besoins:

concat [myFoo $arg] [myBar $arg]

Comme il introduit un espace entre les deux résultats (à des fins de liste) si l'un n'existe pas.

Semble que 'String concat' serait ce que je veux, mais il ne semble pas être dans ma version de L'interpréteur Tcl.

string concat [myFoo $arg] [myBar $arg]

La chaîne concat est écrite ici:

21
demandé sur WilliamKF 2009-09-16 03:05:21

3 réponses

Vous pouvez intégrer des commandes dans une chaîne entre guillemets doubles sans avoir besoin d'une variable temporaire:

set result "[myFoo $arg][myBar $arg]"
29
répondu Bryan Oakley 2016-10-06 18:57:53

Si vous faites cela plusieurs fois, dans une boucle, ou séparé par un code intermédiaire, vous pouvez également considérer:

set result ""
append result [myFoo $arg]
append result [myBar $arg]
append result [myBaz $arg]
11
répondu ramanman 2009-09-16 13:56:01

Écrivez-le simplement comme un mot sans espaces supplémentaires:

[myFoo $arg][myBar $arg]

Tcl voit cela comme un seul mot après substitution, quel que soit le résultat des deux sous-commandes.

4
répondu SingleNegationElimination 2009-09-15 23:14:42