• 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调用其他的脚本模块。

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

  • 相关阅读:
    [C#]获取指定文件文件名、后缀、所在目录等
    Mysql 存储引擎中InnoDB与Myisam的主要区别
    MySQL的btree索引和hash索引的区别
    Mysql事务的隔离级别
    AE序列号
    mysql索引类型说明
    去除url中自带的jsessionid
    redirect传值非url(springmvc3)
    ueditor的使用
    mysql用户管理(开户、权限)
  • 原文地址:https://www.cnblogs.com/kane1990/p/2293978.html
Copyright © 2020-2023  润新知