Как лаконично объединить строки в Tcl?
-
07-07-2019 - |
Вопрос
Я могу легко объединить две переменные, foo и bar, в Tcl следующим образом:"${foo}${бар}".
Однако, если я не хочу помещать промежуточный результат в переменную, как я могу легко объединить результаты вызова какой-либо процедуры?
Длинной рукой это будет написано:
set foo [myFoo $arg]
set bar [myBar $arg]
set result "${foo}${bar}"
Есть ли способ получить результат без введения временных переменных foo и bar?
Это неправильно для моих целей:
concat [myFoo $arg] [myBar $arg]
поскольку он вводит пробел между двумя результатами (для целей списка), если таковой не существует.
Похоже, мне нужно «соединение строк», но, похоже, его нет в моей версии интерпретатора Tcl.
string concat [myFoo $arg] [myBar $arg]
Здесь написано о конкате строк:
Решение
Вы можете вставлять команды в строку в двойных кавычках без необходимости использования временной переменной:
set result "[myFoo $arg][myBar $arg]"
Другие советы
Если вы делаете это много раз, в цикле или разделяете каким-то промежуточным кодом, вы также можете рассмотреть возможность:
set result ""
append result [myFoo $arg]
append result [myBar $arg]
append result [myBaz $arg]
просто напишите это как слово без лишних пробелов:
[myFoo $arg][myBar $arg]
Tcl рассматривает это как одно слово после замены, независимо от результата двух подкоманд.