TCL入门

Eclipse-dltk-itcl_en_fedora_11_con_KDE_4.2.4

6 流程控制

6.1 语法重点

  • 各种控制语句包括:if,switch,while,for,foreach(在列表和数组中提到),source
  • 控制语句内部执行的脚本实际上是本语句的一个参数(本质上执行了一条语句)
  • 有关大括号{}和换行符的

    • Tcl解释器认为换行符是前一个命令的分隔符,除非换行符在花括号或者双引号之内(参考if语句的参数二)
1
123
  • 有关大括号{}和双引号的
  • 表达式真假:

    • 真:非0、yes、true
    • 假:0、no、false

6.2 各种控制语句

6.2.1 if 语句

标准if

标准语句:

if{参数一}{参数二}:第一个参数是一个表达式,第二个参数是待执行的TCL脚本

1
2
3
4
set x 1
if{$x>0}{
set x -$x
}

错误语句(类C):

1
2
3
4
5
set x 1
if{$x>0}
{
set x -$x
}
  • 错误原因查看上一节有关大括号和双引号内容

if-else

标准语句:

1
2
3
4
5
6
if{表达式一}{
脚本一
} else {
脚本二
}
脚本三

错误语句(类C):

1
2
3
4
5
6
7
8
if{表达式一}
{
脚本一
}
else {
脚本二
}
脚本三
  • 错误原因查看上一节有关大括号和双引号内容

if-elseif-else

标准语句:

1
2
3
4
5
6
7
8
if{表达式一}{
脚本一
} elseif {
脚本二
} else {
脚本三
}
脚本四

有时候switch比if-elseif-else更高效

6.2.2 switch

标准语句:

1
2
3
4
5
6
if{表达式一}{
脚本一
} else {
脚本二
}
脚本三

匹配模式参数

2.3 while

2.4 for

2.5 source

3 其他

7 过程

Tcl分为:

  • 内建(Build-in)过程(如power()、exp()等)
  • 用户自定义过程

``proc 参数一 {参数二} {参数三}

1
2
3
proc func {ref1 ref2}{
tcl_sentence
}

proc只是一个普通的Tcl命令而不是特殊的语法声明,因此pro的参数处理方法和其他Tcl命令相同