本帖最后由 i电子 于 2012-8-28 11:17 编辑
在TCL中有用于控制流程脚本执行流程的命令,它与C语言及其它高级语言的流程控制相似,包括if、while、for、foreach、switch和eval等。 if:这个命令有两个参数,第一个参数是表达式,第二个参数是一个TCL脚本,如下式所示: if {$x < 0} { ··· } elseif {$x == 0} { ··· } elseif {$x == 1} { ··· } else { ··· } 两个参数都用大括号引用,这样直到命令执行前都不会发生替换。这边需要注意的是左边大括号必须在它前一个单词的同一行,不然会发生错误,如下式所示,解析器会认为if{$x < 0}表示的就是一条命令,报告if命令因参数不足而导致错误。 if {$x < 0} { ··· } else { ··· }
switch:此命令是用一个值与很多模式比较,执行能匹配的那个模式对应的TCL脚本。命令形式如下: switch $x { a{···} b{···} c{···} d{···} }
while、for、foreach:这三个命令都是循环命令,都是循环执行一段TCL脚本,不同之处在于它们决定退出循环的方式。 while命令有两个参数,分别是表达式和TCL脚本,在执行命令时首先处理表达式,如果表达式的结果非零则执行TCL脚本,命令形式如下: while {$x > 0} { ··· } for命令有四个参数,第一个参数是初始化脚本;第二个参数是决定循环终止的表达式;第三个参数是再初始化脚本;第四个参数是循环执行的脚本。命令形式如下: for {set i 0} {$i < 7} {incr i 1} { ··· } foreach命令通过遍历一个列表中的所有元素来执行循环,其中有三个参数,第一个参数是变量名,第二个参数是列表,第三个参数是构成循环的TCL脚本。命令形式如下: foreach {x} {a b c d f} { ··· } 此命令是在TCL中特有的,这边详细说明一下,如图1所示,其中第一个参数中有两个变量名,因此每次需要读取列表中的两个元素,而在脚本中对这两个元素值进行输出。 图1
eval:此命令用于创建和运行TCL脚本的通用构造块,它的其中一个用途是能执行多个命令,可以先将一些命令放在变量中,然后用eval命令将变量的值作为脚本运行,如图2所示。 图2
source:此命令可以读取一个文件,然后将文件内容作为TCL脚本运行。如我在当前文件目录下有个文件:hoki.tcl,文件内容就是一条命令:puts“Hoki’blog——冰冻三尺非一日之寒!”,然后用source命令读取这个文件,如图3所示,发现TCL也支持中文啊! 图3
|