TCL: объединить переменную и строку

Предположим, что мы имеем переменную 'a', установленную в 12345:

set a 12345

Теперь, как установить новую переменную "b", которая содержит значение "a", а другая строка - 9876

обходной путь - это что-то вроде

set a "12345"
set u "9876"

set b $a$u

но я не хочу указывать $u, вместо этого я хочу использовать прямую строку.

Ответы

Ответ 1

Вы можете сделать:

set b ${a}9876

или, если b либо установлен в пустую строку, либо не определен:

append b $a 9876

Вызов append более эффективен, если $a длинный (см. append doc).

Ответ 2

другой вариант - использовать команду set. поскольку установить дает значение a, мы можем использовать его для установки значения b, как показано ниже

установить b [установить a] 9876

Ответ 3

Или вы можете использовать format

set b [format %s%s $a $u]

Ответ 4

Другой вариант - использовать команду concat, как показано ниже.

set b [concat $a\9876]

Ответ 5

Я не понимаю, что вы подразумеваете под прямым строком... Я не уверен, если вы хотите... Однако, если вы хотите получить значение 12349876, вы можете сделать:

% set b [concat $a$u]
12349876

Если вы хотите, чтобы $a или $u являлись частью строки, просто добавьте обратную косую черту '\' перед желаемой переменной.

Ответ 6

Начиная с Tcl 8.6 .2, существует string cat, который может быть использован для решения этой проблемы.

set b [string cat $a 9876]

Ответ 7

установить myString "Hello"

добавить myString "Мир!"

помещает "$ myString"

Привет, мир!