Вопрос

Я могу легко объединить две переменные, 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 рассматривает это как одно слово после замены, независимо от результата двух подкоманд.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top