Как кратко объединить строки в Tcl? - PullRequest
21 голосов
/ 16 сентября 2009

Я могу легко объединить две переменные, foo и bar, как показано в Tcl: "$ {foo} $ {bar}".

Однако, если я не хочу помещать промежуточный результат в переменную, как я могу легко объединить результаты вызова некоторого процесса?

Длинная рука это будет написано:

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

Есть ли способ создать результат без введения временных переменных foo и bar?

Это неправильно для моих целей:

concat [myFoo $arg] [myBar $arg]

, поскольку он вводит пробел между двумя результатами (для целей списка), если один не существует.

Похоже, что 'string concat' было бы тем, чего я хочу, но, похоже, его нет в моей версии интерпретатора Tcl.

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

Конкат строки записан здесь:

Ответы [ 3 ]

29 голосов
/ 16 сентября 2009

Вы можете встраивать команды в строку в двойных кавычках без временной переменной:

set result "[myFoo $arg][myBar $arg]"
11 голосов
/ 16 сентября 2009

Если вы делаете это много раз, в цикле или через некоторый промежуточный код, вы также можете рассмотреть:

set result ""
append result [myFoo $arg]
append result [myBar $arg]
append result [myBaz $arg]
4 голосов
/ 16 сентября 2009

просто напишите это как слово без лишних пробелов:

[myFoo $arg][myBar $arg]

Tcl видит это как одно слово после подстановки, независимо от результата двух подкоманд.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...