Tcl:在列表中添加特殊字符
Tcl: Add special characters in a list
我想在列表中添加:var mylinechart = `{
set myvar "var mylinechart = `\{"
> var mylinechart = `{
lappend mylist $myvar
> var\ mylinechart\ =\ `\{
预期的结果并不理想...我想要这样:
{var mylinechart = `{}
我做错了什么?
tcl 打印机通常不会在外部列表周围添加方括号,或者列出本身不是列表的元素。但是如果你有一个多维列表,那么你就会开始看到它们:
% set mylist [list a b c]
a b c
% lappend mylist [list $myvar]
a b c {var\ mylinechart\ =\ `\{}
mylist
现在是一个包含四个元素的列表,最后一个是一个只有一个元素的列表。它仍然反斜杠所有空格,因此整个事物被视为单个元素。如果您正在做类似写入文件的操作并且不想看到它们,您可以在该元素上使用 puts
:
% puts [lindex $mylist 3 0]
var mylinechart = `{
Tcl 列表格式化程序更喜欢既不使用大括号也不使用反斜杠,但是如果这不起作用(可能是因为元素包含 space 或其他 Tcl 元字符)那么它使用大括号,但是如果 that 不起作用(通常是因为元素有不平衡的大括号)然后它使用反斜杠。反斜杠是最丑陋的选项,但适用于任何东西。
您的示例值有一个不平衡的括号。这意味着当 Tcl 格式化列表时,它使用反斜杠。这可能很难看,但它有效,您可以使用 lindex
恢复值,因此它 必须 是正确的。
Tcl 不会让您控制它在格式化列表时选择使用的格式规则,至少在脚本级别是这样。 (如果您在 C 库级别四处寻找,可能会有更多的控制,但是 不建议这样做 并且您真正可以安全地做的就是强迫事情变得更丑陋。你不能安全地使其不使用反斜杠。)
为了加强,你想要的,{var mylinechart = `{}
,是不是一个格式正确的列表。(我把它放在下面的双引号里,这样我可以很容易地输入它;这本身就表明这是一件坏事。)
% set s "{var mylinechart = `{}"
{var mylinechart = `{}
% lindex $s 0
unmatched open brace in list
我想在列表中添加:var mylinechart = `{
set myvar "var mylinechart = `\{"
> var mylinechart = `{
lappend mylist $myvar
> var\ mylinechart\ =\ `\{
预期的结果并不理想...我想要这样:
{var mylinechart = `{}
我做错了什么?
tcl 打印机通常不会在外部列表周围添加方括号,或者列出本身不是列表的元素。但是如果你有一个多维列表,那么你就会开始看到它们:
% set mylist [list a b c]
a b c
% lappend mylist [list $myvar]
a b c {var\ mylinechart\ =\ `\{}
mylist
现在是一个包含四个元素的列表,最后一个是一个只有一个元素的列表。它仍然反斜杠所有空格,因此整个事物被视为单个元素。如果您正在做类似写入文件的操作并且不想看到它们,您可以在该元素上使用 puts
:
% puts [lindex $mylist 3 0]
var mylinechart = `{
Tcl 列表格式化程序更喜欢既不使用大括号也不使用反斜杠,但是如果这不起作用(可能是因为元素包含 space 或其他 Tcl 元字符)那么它使用大括号,但是如果 that 不起作用(通常是因为元素有不平衡的大括号)然后它使用反斜杠。反斜杠是最丑陋的选项,但适用于任何东西。
您的示例值有一个不平衡的括号。这意味着当 Tcl 格式化列表时,它使用反斜杠。这可能很难看,但它有效,您可以使用 lindex
恢复值,因此它 必须 是正确的。
Tcl 不会让您控制它在格式化列表时选择使用的格式规则,至少在脚本级别是这样。 (如果您在 C 库级别四处寻找,可能会有更多的控制,但是 不建议这样做 并且您真正可以安全地做的就是强迫事情变得更丑陋。你不能安全地使其不使用反斜杠。)
为了加强,你想要的,{var mylinechart = `{}
,是不是一个格式正确的列表。(我把它放在下面的双引号里,这样我可以很容易地输入它;这本身就表明这是一件坏事。)
% set s "{var mylinechart = `{}"
{var mylinechart = `{}
% lindex $s 0
unmatched open brace in list