tcl/tk参考——控制结构uplevel
来源:互联网 发布:食品流通许可证 淘宝 编辑:程序博客网 时间:2024/04/30 03:05
.
.
名称
uplevel - 在不同的堆栈层中执行一个脚本
语法
uplevel ?level? arg ?arg ...?
描述
所有的arg变元使用concat命令风格连接起来,连接起来的命令在level指定后的作用域中执行,uplevel返回执行结果。(堆栈层可以看作是变量起作用的范围)
如果level是一个整数,它指出了调用命令的堆栈距离目前调用堆栈的层数,如果level是以#后面加一个数字,那么这个数字就是命令执行的绝对堆栈层,缺省值为1,如果有了#符号那么后面必须跟一个数字。
例如,假设过程a在最高层调用,然后a调用b,再后来b调用c,假设c调用uplevel名令,如果level是1或者#2或者忽略掉,这个命令将在b的变量的作用域中执行,如果level是2或者#1,那么这个命令将在a的变量的作用域中执行,如果level是3或者#0,这个命令将在最高层执行(只有全局变量是可见的)。
uplevel命令导致在调用过程的堆栈层中"看不到"过程了,在下面的例子里,假设c调用命令:
uplevel 1 {set x 43; d}
当d是另外一个过程时,set命令会在b的作用域中修改变量x,d将在第三层堆栈运行,就像是b过程调用的d过程。
uplevel {set x 42}
set命令将会修改在b作用域中的x变量,在执行d的时候过程c对于调用堆栈层是不可见的,命令info level可以获得当前程序的堆栈层。
uplevel可以实现新的控制结构,例如,uplevel可以实现while过程。
示例
uplevel命令在实现新的控制结构方面非常有用,下面的例子显示了它可以用来创建一个do命令:
proc do {body while condition} {
if {$while ne "while"} {
error "required word missing"
}
set conditionCmd [list expr $condition]
while {1} {
uplevel 1 $body
if {![uplevel 1 $conditionCmd]} {
break
}
}
}
- tcl/tk参考——控制结构uplevel
- tcl/tk参考——控制结构after
- tcl/tk参考——控制结构for
- tcl/tk参考——控制结构vwait
- tcl/tk参考——控制结构break
- tcl/tk参考——控制结构catch
- tcl/tk参考——控制结构continue
- tcl/tk参考——控制结构error
- tcl/tk参考——控制结构eval
- tcl/tk参考——控制结构foreach
- tcl/tk参考——控制结构if
- tcl/tk参考——控制结构update
- tcl/tk参考——控制结构while
- tcl/tk参考——控制结构switch
- tcl/tk参考——控制结构return
- tcl/tk参考——控制结构catch
- tcl/tk参考——控制结构error
- tcl/tk参考——字符串subst
- Dxperience 8.1.1 source 源代码和编译脚本
- ubuntu 下的subversion,trac,apache2安装配置
- iis6,resin3多站点配置
- 经络保养的正确时间
- 开博寄语
- tcl/tk参考——控制结构uplevel
- linux优秀网站推荐【转】
- what is XML?
- linux上使用java获取本机IP地址和MAC地址
- 今天开始C++
- 全球黑客大赛落幕 苹果及微软操作系统均被攻破
- 使用命令行 Subversion 访问项目源文件
- linux内核网络栈代码分析
- 未公开API函数揭秘——通用对话框