Tcl chap6 流程控制

本文介绍了Tcl语言中的条件控制结构,如if、elseif、else和switch命令的使用规则,以及while和for循环的工作原理。同时提到了continue和break在循环中的作用,以及source命令用于导入和执行其他Tcl脚本的功能。
摘要由CSDN通过智能技术生成

使用命令

  • if

  • elseif

  • else

  • switch

  • while

  • continue

  • break

  • for

  • source

if命令

  • if命令规定每一个左花括号必须与它前一个字符同行(换行符视为命令分隔符)。

  • else和elseif只是if命令的可选子句,使用时,要将其与if第二个参数的右花括号放在同一行,不能另起一行。

set n 0
=> 0
if ($n == 0) {
    set str zero
} elseif ($n == 1) {
    set str one
} elseif ($n == 2) {
    set str two
} else {
    set str hello
}
=> zero

switch命令

  • switch命令需要两个参数:第一个参数是待检测的值,第二个参数是包含一个或多个元素对的列表。第一个元素是匹配模式,第二个元素是匹配成功后需要执行的脚本。

  • 建议将匹配模式与对应脚本放在花括号中,可以组织不必要的变量置换,也能避免换行符被当做命令分隔符来处理。

set x ONE
=> ONE
set y 1
=> 1
set z ONE
=> ONE
switch -exact -- $x {
    $z {
        set v [expr {$z + 1}]
        puts "MATCH \$z. $y+$z is $v"    
    }
    ONE {
        set v [expr {$z + 1}]
        puts "MATCH ONE. $y+one is $v"
    }
    default {
        puts "$x is NOT A MATCH"
    }
}
=> MATCH ONE. 1+one is 2
  • 使用switch命令时,可通过短划线“-”将相同脚本的不同匹配模式捆绑在一起,使得代码更简洁。

  • swich添加注释时,应始终将注释放在匹配模式对应的脚本中。

while命令

  • while是一种循环,后跟两个参数。第一个参数是一个由表达式构成的循环条件,第二个参数是由Tcl脚本构成的循环体。

  • while命令终止时,返回一个空字符串。

  • while命令后的两个参数一定要放在花括号中,以避免while执行前发生意外置换。

  • continue和break都可以退出循环,并且都是从所在位置直接退出,使得位于同一循环体中其后位置的脚本不被执行。两者区别在于continue只结束本次循环,并不终止整个循环的执行;break则结束整个循环执行。

set n 1
=> 1
while "$n < 3" {
    incr n
    if {$n > 4} break
    if {$n > 3} continue
    puts "n is $n"
}
=> n is 2
=> n is 3
puts "Exited loop with n equal to $n"
=> Exited loop with n equal to 5

for循环

  • for循环后跟4个参数:第一个参数是初始化变量;第二个参数是包含循环变量的表达式,用于判断循环是否执行;第三个参数是更新循环变量;第四个参数是由Tcl脚本构成的循环体。

  • for循环是可以嵌套的。

set n 4
=> 4
for {set i 0} {$i < $n} {incr i} {
    puts "i is $i"
}
=> i is 0
=> i is 1
=> i is 2
=> i is 3

source命令

  • source命令用于读取一个Tcl文件,并将文件内容作为Tcl脚本运行。

  • source后的文件名可以用绝对路径指定,也可以用相对路径指定。

# start.tcl
set a 1

# end.tcl
if {$a < 1} {
    puts "a is less than 1"
} else {
    puts "a is greater than 1"
}

#prog.tcl
source start.tcl
source end.tcl
=> a is greater than 1
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值