Форма, которую вы ищете, это денормализованный список;это не та операция, которую производят списки Tcl (поскольку они добавляют фигурные скобки только при необходимости), а та, которую они могут использовать.Это означает, что, формально говоря, то, что вы хотите сделать, это не рекомендуется! Борьба с программным обеспечением не является хорошим планом!
Но это возможно.Если вы знаете , что элементы относительно хорошо себя ведут (приблизительно, что они сами имеют сбалансированные фигурные скобки, если они вообще есть), вы можете сделать это с помощью join
и format
:
set List {"A" "B"}
set List [join [lmap x $List {format "{%s}" $x}]]
Это работает для большинства списков, но не для всех, так что будьте осторожны:
set List {A B}
lappend List "C\{D"; # <== Element with unbalanced braces; *LEGAL* in lists!
puts $List
# ==> A B C\}D
puts [join [lmap x $List {format "{%s}" $x}]]
# ==> {A} {B} {C}D}
Обходные пути для этого становятся все более и более искаженными, и поэтому рекомендуется использовать только встроенные Tcl.в механизме сериализации списка, который обрабатывает содержимое произвольного элемента (и проверяется на это), а не заботится о том, как форматируются простые слова.