【发布时间】:2015-03-25 08:24:31
【问题描述】:
我在工作场所的 TCL 自动化环境中工作。 我正在尝试使用“after”在我的脚本中运行延迟命令。 我遇到的问题是,当我尝试在“之后”下的代码块内指定带有变量的命令时,无法识别 var 并且我收到一条错误消息。 我将引用代码的相关部分。
proc test_script1 {{bh0 0} ...more vars....} {
.
.
.
after [expr 20000] {
set some_value[ ns1::probe_TCP_connections $bh0 $main_duration 1 15] }
puts "the value i got is $some_value"
}
我似乎得到了一个错误: 无法读取“some_value”:没有这样的变量
任何人都可以建议问题是什么,以及如何解决它? 谢谢
【问题讨论】:
-
你读过manual吗?您编写命令的方式使得
after的命令在继续执行脚本的同时以指定的延迟运行。所以puts "the value i got is $some_value"在设置变量之前被执行。此外,after块内的set看起来很可疑。 -
你是对的,看跌期权是在之后执行的。我会澄清一下,假设我在看跌期权之前添加了一个延迟,还有另一个“之后”。解释器仍然无法识别变量
-
另外,在手册中:“命令将在全局级别执行(在任何 Tcl 过程的上下文之外)”因此您必须从全局级别获取变量,并且有相当多的有几种方法可以做到这一点。
-
首先感谢。如果您能详细说明,我将不胜感激。
标签: variables scope global-variables tcl