如何在TCL中合并单元素列表并保持指定括号格式,避免冗余嵌套
TCL列表格式化:实现指定的嵌套括号展示格式
你要构建特定格式的TCL列表,要求每次添加新元素时,把之前的列表整体用大括号包裹后与新元素并列,最终输出得是这样:
a {a} b {{a} b} c
之前的两种尝试都达不到要求:
- 用
list $l b得到的是a b,没给前序列表加包裹 - 手动拼字符串
"{$l}b"会导致括号过度嵌套还把元素粘在一起,出来是{{{a}b}}c}
直接用下面的代码就能解决:
% set l [list a] a % set l [list [list $l] b] {a} b % set l [list [list $l] c] {{a} b} c
为啥这么做就行?
list $l会把当前的列表l转成一个带大括号包裹的单个元素(需要转义时自动添加括号)- 外层的
list ... 新元素把这个包裹后的元素和新元素拼成新列表,输出的字符串格式正好是你要的,既不会漏包裹,也不会过度嵌套或者元素粘在一起。
内容的提问来源于stack exchange,提问作者FlyDoggie
相关产品推荐
相关产品推荐

