在 TCL 中,我们是否有任何机制可以不断轮询变量更改并在之后执行某些操作。
我已经读过vwait
,但它正在暂停脚本。我希望脚本能够运行,并且在变量值发生变化时执行某些操作。
vwait 的一种异步模式。
您可以将跟踪附加到变量,以便每当变量发生更改(或者根据标志,读取或删除)时,您可以立即执行某些操作。试试这个例子:
\n\nset abc 123\nproc exampleCallback args {\n global abc\n puts "The variable abc is now $abc"\n}\ntrace add variable abc write exampleCallback\nincr abc\nincr abc\nincr abc\n
Run Code Online (Sandbox Code Playgroud)\n\n可以跟踪局部变量,但不推荐。此外,在内部,该vwait
命令设置一个跟踪,在写入变量时仅触发一个标志;当事件循环返回时,该标志表示等待结束。碰巧该跟踪是使用 Tcl 的 C API 设置的,而不是其脚本级 API\xe2\x80\xa6