2009-09-15 15 views
21

Ich kann zwei Variablen, foo und bar, wie folgt in Tcl: "$ {foo} $ {bar}" leicht verketten.Wie verketten Sie Strings in Tcl präzise?

Wenn ich jedoch kein Zwischenergebnis in eine Variable einfügen möchte, wie kann ich die Ergebnisse des Aufrufs einiger proc leicht verketten?

Lange Hand würde dies geschrieben werden:

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

Gibt es eine Möglichkeit Ergebnis zu erzeugen, ohne die temporären Variablen foo und bar einzuführen?

dies zu tun, ist falsch für meine Zwecke:

concat [myFoo $arg] [myBar $arg] 

, da es einen Raum zwischen den beiden Ergebnisse (für die Liste Zwecke) führt, wenn man nicht existiert.

Scheint so 'string concat' wäre was ich will, aber es scheint nicht in meiner Version von Tcl-Interpreter zu sein.

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

String concat ist über hier geschrieben:

Antwort

29

Sie können ohne die Notwendigkeit einer temporären Variablen innerhalb eines Strings in doppelten Anführungszeichen Befehle einbetten:

set result "[myFoo $arg][myBar $arg]" 
4

schreiben Sie es einfach als ein Wort ohne zusätzliche Leerzeichen:

[myFoo $arg][myBar $arg] 

Tcl sieht dies als ein einzelnes Wort nach der Substitution, unabhängig vom Ergebnis o f die zwei Unterbefehle.

10

Wenn Sie dies viele Male tun, in einer Schleife, oder durch einen Zwischencode getrennt, könnten Sie auch in Betracht ziehen:

set result "" 
append result [myFoo $arg] 
append result [myBar $arg] 
append result [myBaz $arg]