web-dev-qa-db-ja.com

Tclで文字列を簡潔に連結する方法は?

Tclの「$ {foo} $ {bar}」のように、fooとbarの2つの変数を簡単に連結できます。

ただし、中間結果を変数に入れたくない場合は、プロシージャを呼び出した結果を簡単に連結するにはどうすればよいですか?

長い手で書くと次のようになります。

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

一時変数fooとbarを導入せずに結果を作成する方法はありますか?

これを行うのは私の目的では正しくありません:

concat [myFoo $arg] [myBar $arg]

なぜなら、存在しない場合、2つの結果の間に(リストの目的で)スペースが挿入されるためです。

「文字列連結」のように思えますが、私のバージョンのTclインタープリタにはないようです。

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

文字列連結はここについて書かれています:

21
WilliamKF

一時変数を必要とせずに、二重引用符で囲まれた文字列内にコマンドを埋め込むことができます。

set result "[myFoo $arg][myBar $arg]"
29
Bryan Oakley

これを何度も、ループで、またはいくつかの中間コードで区切って実行している場合は、次のことも検討してください。

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

余分なスペースのない単語としてそれを書くだけです:

[myFoo $arg][myBar $arg]

Tclは、2つのサブコマンドの結果に関係なく、これを置換後の単一のWordと見なします。