例如,在Tcl中有一个类似的列表, {“ A”“ B”}
,我想将其转换为一个列表,并将其每个元素作为一个列表, {{A} {B}}
我尝试了以下代码将其每个元素映射到列表。
set List {"A" "B"}
set List [lmap s $List {list $s}]
puts $List
我希望输出为
{A} {B}
但实际输出是
A B
任何帮助将不胜感激。谢谢。
答案 0 :(得分:0)
您要查找的表单是非规范化列表;这不是Tcl的列表操作将要产生的(因为它们仅在需要时才添加花括号),而是可以使用的一种。正式而言,这意味着您要寻求的是 不推荐! !与软件作斗争不是一个好计划!
但是有可能。如果您知道元素的表现相对良好(大约,如果它们完全具有括号,则它们内部具有平衡的括号),则可以使用join
和{{1} }:
format
这适用于大多数列表,但请注意,并非全部如此:
set List {"A" "B"}
set List [join [lmap x $List {format "{%s}" $x}]]
此问题的变通方法越来越失真,这就是为什么建议您仅使用Tcl的内置列表序列化机制,该机制处理任意元素的内容(并经过测试可以这样做),而不是在乎如何简单的单词被格式化。