如何在不在每行末尾加反斜杠的情况下列出多行值?
如果没有在每行末尾加反斜杠,就无法创建多行列表。
例如以下(错误的)代码:
如果没有在每行末尾加反斜杠,就无法创建多行列表。 例如以下(错误的)代码:
set pets [list
cat
dog
elephant
]
产生错误:
invalid command name "cat"
while executing
"cat"
invoked from within
"set pets [list
cat
dog
elephant
]"
在行末添加反斜杠即可解决该问题:
set pets [list \
cat \
dog \
elephant \
]
它看起来很丑,而且容易出错。
请注意:
- 我知道使用花括号(
{
&}
),但它不允许执行命令并且仍保留冗余的空格字符。 - 任何其他命令都可以使用(例如
dict create
), 不仅仅是我的示例中使用的list
。
使用Tcl 8.5
list subst $list
而不是subst {$list}
。 - Donal Fellowssubst
添加了-nobackslash
选项,因为这样可以更接近我期望的行为。(更新后的示例反映了这一点。)@DonalFellows,所以完整的代码行应该是foreach item \[[list subst -nobackslash $list]] {
,对吗?你是否也出于其他目的而推荐这种风格? - Andrew Cheong