Tcl学习笔记(四)——流程控制、过程、命名空间、访问文件

1. 流程控制

if命令

        if命令后跟两个参数:表达式、待执行的Tcl脚本。if命令中的每一个左大括号都必须与它前一个字符同行。

        有elseif和else可选子句,使用时与if中第二个参数的右大括号放在同一行。

switch命令

        switch命令利用一个给定值与多个模式进行匹配,执行匹配成功的TCL脚本,有两个参数:待检测的值、一个或多个元素对的列表。每个元素对的第一个元素是匹配模式,第二个元素是匹配成功后需要执行的脚本。

        switch同样有三种匹配方式-exact(默认,严格的字符串匹配)、-glob(string match命令下的匹配)、-regexp(正则表达式匹配)。匹配方式后的“--”表明选项结束,后为待检测的值。switch命令的列表参数最好放在大括号中,避免变量值换导致错误。

        如果switch命令的最后一个模式为default,则当与其他模式都无法匹配值,就会执行default对应的脚本。

        如果匹配模式对应的脚本只是一个短划线“-”,那么switch命令就会认为该模式与下一个模式对应的脚本相同,采用此方法可将对应脚本相同的多个不同匹配模式捆绑在一起。

switch命令中的注释只能添加到匹配模式对应的脚本中,否则会报错。

while命令

        while循环命令有两个参数:由表达式构成的循环条件、由Tcl脚本构成的循环体。在执行时,while命令先处理表达式,然后根据表达式的结果判断是否执行循环体。如果表达式的值为真(非0、yes或true),则执行循环体。这个过程不断重复,直至表达式的结果为假(0、no或false),返回一个空字符串。

        continue和break是循环控制命令,continue命令只结束本次循环,break命令结束整个循环。

for命令

        for循环命令有四个参数:初始化变量、包含循环变量的表达式(用于判断循环是否执行)、更新循环变量、由Tcl脚本构成的循环体。for命令先运行第一个参数中的脚本,随后处理第二个参数值的表达式,如果表达式为真,则运行第四个参数中的Tcl脚本,之后执行第三个参数中的脚本进行循环变量的更新,更新完毕后再处理第二个参数中的表达式,不断循环直到表达式的结果为假。

        for循环也可以嵌套。

source命令

        source命令用于读取一个Tcl文件,并将文件内容作为Tcl脚本运行,只有一个参数指定要读取的文件名,可以用绝对路径指定,也可以用相对路径指定。source 的返回值就是运行文件内容的返回值,即文件中最后一条命令的返回值。

2. 过程

        Tcl的过程是由一系列命令构成的代码块,用于执行特定的任务,可分为Tcl自定义的内建(Built-in)过程(如power()、exp()等)和用户定义的过程。过程由命令proc创建,有三个参数:过程名、参数名列表、构成过程块的Tcl脚本,过程块通过return返回该过程的值。

过程的参数名列表和返回值

        proc的参数名列表可以为空、一个参数名、多个参数名或参数名的个数为变量。参数名列表支持可变个数的参数,将特殊参数名args放在参数名列表的最后一个,args是一个可变长度的列表。

        在创建过程中,Tcl允许给参数设置默认值,但要求带默认值的参数名与对应的参数值出现在参数名列表的最后位置,除非最后一个参数名为args。参数名在参数名列表里的顺序为无默认值的参数名、带默认值的参数名和特殊参数名args。

        当过程中没有使用return命令,返回值为过程块

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值