Comment concaténer de manière concise des chaînes dans Tcl?
-
07-07-2019 - |
Question
Je peux facilement concaténer deux variables, foo et bar, comme suit dans 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 cela s’écrirait:
set foo [myFoo $arg]
set bar [myBar $arg]
set result "${foo}${bar}"
Y a-t-il un moyen de créer un résultat sans introduire les variables temporaires foo et bar?
Cela est incorrect pour mes besoins:
concat [myFoo $arg] [myBar $arg]
car il introduit un espace entre les deux résultats (à des fins de liste) s'il n'en existe pas.
On dirait que "string concat" serait ce que je veux, mais cela ne semble pas être dans ma version de l'interpréteur Tcl.
string concat [myFoo $arg] [myBar $arg]
La concatitation de chaînes est décrite ici:
La solution
Vous pouvez incorporer des commandes dans une chaîne entre guillemets doubles sans recourir à une variable temporaire:
set result "[myFoo $arg][myBar $arg]"
Autres conseils
Si vous faites cela plusieurs fois, dans une boucle ou séparés par un code intermédiaire, vous pouvez également envisager:
set result ""
append result [myFoo $arg]
append result [myBar $arg]
append result [myBaz $arg]
écrivez-le simplement comme un mot sans espaces supplémentaires:
[myFoo $arg][myBar $arg]
Tcl considère cela comme un seul mot après la substitution, quel que soit le résultat des deux sous-commandes.