打印

GSM和大家一起学习tcl脚本

[复制链接]
1393|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
GoldSunMonkey|  楼主 | 2012-4-10 21:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
GoldSunMonkey|  楼主 | 2012-4-10 21:31 | 只看该作者
foreach语句
    foreach循环,格式为:
    foreach varname list body
    foreach varlist1 list1 ?varlist2 list2 ...? body
    主要功能为遍历列表中的元素。
    主要有三种使用形式,最简单的,对单个列表中的元素进行一个一个的遍历:
    % foreach var {a b c d e f} {
    puts $var
    }
    a
    b
    c
    d
    e
    f
    可以对列表进行多个元素一起赋值,这时varname是一个n个元素列表结构,每次遍历list列表中的n个元素赋值给以varname列表元素为名称的变量。
    % foreach {var1 var2 var3} {a b c d e f} {
    puts "$var1 $var2 $var3"
    }
    a b c
    d e f
    遍历多个列表中的元素,这里举例以varname为单个元素为例:
    % foreach var1 {a b c} var2 {d e f} {
    puts "$var1 $var2"
    }
    a d
    b e
    c f
    如果元素不足那么会以空来补充:
    % foreach var1 {a b c} var2 {d e} {
    puts "$var1 $var2"
    }
    a d
    b e
    c
    可以利用这个技巧给变量赋值,比如把一个列表中的前3个元素分别赋值给var1、var2和var3:
    % foreach {var1 var2 var3} {a b c d e f} {
    break;
    }
    % puts "$var1 $var2 $var3"
    a b c

使用特权

评论回复
板凳
jakfens| | 2012-4-11 09:19 | 只看该作者

使用特权

评论回复
地板
GoldSunMonkey|  楼主 | 2012-4-11 15:55 | 只看该作者
set命令:
如:
set a hello
set b $a // b = "hello" 实际上传给set命令的参数
//是b,"hello"
set c a // b = "a"

使用特权

评论回复
5
GoldSunMonkey|  楼主 | 2012-4-11 15:55 | 只看该作者
Command substitution with brackets 命令子替换(用方括号)

例如:
set a [set b "hello"]
实现执行 set b "hello" 并用其结果来替换源命令
中的方括号部分,产生一条新命令
set a "hello" //"hello" 为 set b "hello" 的返
 //回值
最终的结果是b="hello" a="hello"

当命令的一个子域以方括号开始以方括号结束,表示要进行一个命令子替换。并执行该子命令,用其结果来替换原命令中的方括号部分。方括号中的部分都被视为Tcl命令。

一个复杂一点的例子:
set a xyz[set b "abc"].[set c "def"]
//return xyzabcdef

使用特权

评论回复
6
GoldSunMonkey|  楼主 | 2012-4-11 15:57 | 只看该作者
/b Backspace (0x8).

/f Form feed (0xc).

/n Newline (0xa).

/r Carriage-return (0xd).

/t Tab (0x9).

/v Vertical tab (0xb).

/{ Left brace (`{').

/} Right brace (`}').

/[ Open bracket (`[').

/] Close bracket (`]').

/$ Dollar sign (`$').

/sp Space (` '): does not terminate argument.

/; Semicolon: does not terminate command.

/" Double-quote.

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:                     2014, 追逐梦想

264

主题

17215

帖子

523

粉丝