ominous2012的个人空间 https://blog.eetop.cn/934213 [收藏] [复制] [分享] [RSS]

空间首页 动态 记录 日志 相册 主题 分享 留言板 个人资料

日志

tcl--控制

已有 1026 次阅读| 2016-3-13 21:57 |个人分类:tcl

1.If

If {$x<0} {

...} elseif {$x==0} {

....

} else {

 

}

 

2.switch

格式

switch $x  a  {incr t1}  b  {incr t2}  c {incr t3}

Switch $x {

 A {incr t1}

B {incr t2}

C {incr t3}

}

 

Switch $x \

A {incr t1} \

B {incr t2} \ 

C {incr t3}

 

 

% proc sw {x} {

> switch $x {

> 1 {puts "111"}

> 2 {puts "222"}

> }

> }

% sw 1

111

 % 

 

Switch 支持3中模式匹配

-exact 表示严格的字符串比较

-glob 表示string match 命令下的匹配

-regexp 正则表达式

对于正则表达式匹配,还可以指定-matchvar参数,在它后面跟一个变量名。Switch名利会在这个变量中存入一个列表,第一个元素是与这个正则表达式匹配的字符串,的哥是首个捕获的子模式字符,一次类推。

-indexvar

这个索引变量会接收到有关字符索引的一个列表、

如果switch的命令的某个脚本是-,那么switch会使用下一个模式对应的脚本。

% switch 1 {

> 1 -

> 2 -

> 3 {puts "123"}

> 4 {puts "44"}

> }

123

 

Switch的注释只能加在脚本部分,如

3 {

  #.........

}

 

3.whileforforeach

% set i 3

3

 % while {$i>=0} {

> lappend a $i

> incr i -1

> }

 % set a

3 2 1 0

 

For while等价

For {set i 0} {$i<10} {incr i} {

 

}

 

% set b {}

 % foreach i {1 2 3} {

set b [linsert $b 0 $i]

}

% set b

3 2 1

 % 

Foreach 还可以接受变量列表,当剩下的元素少于变量名列表中变量的个数,没有对应元素的变量就设为空字符串。

% foreach {x y} {a b c d e} {

> puts "<$x><$y>"

> }

<a><b>

<c><d>

<e><>

4.breakcontinue

Break让引起最内层循环的命令立即终止循环

Continue只终止最内层循环的当前迭代

% set b {}

if {$i==2} break

set b [linsert $b 0 $i]

}

 % set b

1

 % set b {}

% foreach i {1  2 3} {

if {$i==2} continue

set b [linsert $b 0 $i]

}

 % set b

3 1

 

 

5.Eval

eval用于创建和运行tcl脚本的通用构造快。它接受任意多个参数,把他们用分割符串联起来,然后把串接的结果作为一个tcl脚本处理。

Eval的一个用途是生成命令

% set reset {

> set a 0

> set b 0

> set c 0

> }

 

set a 0

set b 0

set c 0

 

% eval $reset

0

 % set a

0

% set d

can't read "d": no such variable

历史上eval最重要的用途曾经是强制进行另一极的解析。

 

% set var {a b c}

a b c

% eval $reset

0

% set a

0

% unset $var

can't unset "a b c": no such variable

% set a


点赞

全部作者的其他最新日志

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 注册

  • 关注TA
  • 加好友
  • 联系TA
  • 0

    周排名
  • 0

    月排名
  • 0

    总排名
  • 0

    关注
  • 2

    粉丝
  • 0

    好友
  • 0

    获赞
  • 1

    评论
  • 529

    访问数
关闭

站长推荐 上一条 /1 下一条

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-4-27 14:17 , Processed in 0.031260 second(s), 14 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
返回顶部