我喜欢在语句块很短的情况下在多行中构造if {} {} elseif {} {}。
if {cond1} {do1}
elseif {cond2} {do2}
elseif {cond3} {do3}
但是TCL不允许我这样做。给出:无效的命令名称" elseif"
当我打开围绕着'做'声明分成多行,但看起来很难看。
if {cond1} {do1
} elseif {cond2} {do2
} elseif {cond3} {do3}
TCL的根本问题是什么阻止它在if之后识别下一行的elseif?
谢谢, 格特
答案 0 :(得分:4)
换行符终止当前命令。要在下一行继续执行命令,必须对换行符进行转义或引用。
如果换行符之前是反斜杠,则反斜杠,换行符以及顺序后面的所有制表符和空格将替换为单个空格字符。
if {cond1} {do1} \
elseif {cond2} {do2} \
elseif {cond3} {do3} \
else {do4}
如果换行符在大括号内,则它没有语法功能。它只是括号括起来并传递给命令的字符串中的另一个字符。当您需要将包含多个命令的脚本传递给例如,这非常有用。 if
命令:脚本将在命令中重新解释,这些换行将在那里恢复其功能。
if {cond1} {do1
} elseif {cond2} {do2
} elseif {cond3} {do3
} else {do4}
典型的Tcl风格是使用如下脚本参数编写命令:
if {cond1} {
do1
} elseif {cond2} {
do2
} elseif {cond3} {
do3
} else {
do4
}
这种视觉风格并不符合每个人的口味,但人们可以习惯它。
文档:Tcl