tcl/tk参考——控制结构eval

.

.

 

名称

eval - 调用一个Tcl脚本

语法

eval arg ?arg ...?

描述

eval带一个或多个变元,可以有一个或多个命令组成,eval采用concat命令的风格连接所有变元,执行命令并且返回执行结果(或者错误)。

示例

有的时候,把一些片断脚本连接存储起来然后再执行是很有用的,这种技术在很多Tcl内核中都有使用(比如在fcopylsorttrace命令的回调)。下面的命令给出了怎么去使用命令:

set script {
    puts "logging now"
    lappend $myCurrentLogVar
}
set myCurrentLogVar log1
# Set up a switch of logging variable part way through!
after 20000 set myCurrentLogVar log2
for {set i 0} {$i<10} {incr i} {
    # Introduce a random delay
    after [expr {int(5000 * rand())}]
    update    ;# Check for the asynch log switch
    eval $script $i [clock clicks]
}
 

注意在很多情况下(当脚本片断实际上是一个命令的前缀),最好使用{*}$script模式。下面的过程类似于使用lappend命令,插入变元到列表的最前面。

proc lprepend {varName args} {
   upvar 1 $varName var
   # Ensure that the variable exists and contains a list
   lappend var
   # Now we insert all the arguments in one go
   set var [eval [list linsert $var 0] $args]
}

最后一行可以写成:

set var [linsert $var 0 {*}$args]
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值