tcl/tk之流程控制命令

作为学习笔记,写下来仅供自己查阅。

tcl脚本命令风格有些类似linux命令,比较古老和原始的语言,学过linux的看起来应该毫无压力

if 命令

if {$x < 0} {

    set x 0

}

 

if {$x < 0} {

    ...

} elseif {$x == 0} {

    ...

} elseif {$x == 1} {

    ...

} else {

    ...

}

每一个左大括号都必须在它的前一个单词的同一行,因为换行符就是命令分隔符。下面这段脚本就会被解析为两个命令,报告if命令因参数不足而报错:

if {$x < 0}

{

    ...

}

 

switch 命令:

switch $x {

    a {incr t1}

    b {incr t2}

    c {incr t3}

    default {incr t4}

}

 

while 命令:

倒转列表元素书序程序如下:

set b {}

set i {expr {[llength $a] - 1}}

while {$i > 0} {

    lappend b {lindex $a $i}

    incr i -1

}

 for循环 实现如下:

set b {}

for {set i {expr {[llength $a] - 1}}} {$i >= 0} {incr i -1} {

    lappend b [lindex $a $i]

}

 

 foreach命令 实现:

set b {}

foreach i $a {

    set b [linsert $b 0 $i]

}

foreach 命令也接受变量名列表:

foreach {x y} {a b c d e} {

    puts "<$x>,<$y>"

}

=><a><b>

  <c><d>

  <e><>

 

foreach 还可以并行处理多个列表:

foreach i  {a b} {j k} {v w x y z} {

    puts "i:<$i>,j:<$j>,k:<$k>"

=>i:<a>,j:<v>,k:<w>

  i:<b>,j:<x>,k:<y>

  i:<>,j:<z>,k:<>

 

循环控制: break 与 continue

这两个命令与c语言中对应的语句相同,都不需要任何参数。

 

eval 命令:

用于创建和运行tcl脚本的通用构造块。它接受任一多个参数,把它们用分隔符串接起来,然后把串接的结果作为一个tcl脚本处理。

set reset {

    set a 0

    set b 0

    set c 0

}

...

eval $reset

又如:

set vars {a b c d}

eval unset $vars

串接 unset $vars 参数后结果为

unset {a b c d}

然后把以上语句作为一个tcl脚本执行,结果清除a b c d四个变量。

 

source 命令:

读取一个文件,将其内容作为tcl脚本运行。

一个参数,该参数指定要读取的文件名。例如:

source init.tcl

改命令运行init.tcl文件的内容。可以用绝对路径或相对路径。

source 的返回值就是文件内容的返回值,即文件中最后一个命令的返回值。

另外source允许在文件内的脚本中使用return命令终止过程。

使用source命令,可以将一个大的脚本分为小的模块,又一个主脚本用source调用其他的脚本模块。

可以通过把过程定义放到一个文件中,把可重用的过程建立成库。

原文地址:https://www.cnblogs.com/kane1990/p/2293978.html