Tcl 为什么要使用;“0”之后;而不是直接运行命令?

Tcl 为什么要使用;“0”之后;而不是直接运行命令?,tcl,Tcl,我在0之后看到了的一些用法。我想知道这里的意义是什么,为什么不直接调用命令?换句话说,这里的区别是什么: after 0 "puts hi" puts hi 谢谢。0…之后的有效地将提供的命令调用放在事件循环要处理的活动队列的前面,但它位于所有当前计划活动的后面(例如,因为其套接字已可读或其计时器事件已触发)。这将有效地将命令的运行延迟尽可能短,而不会使其他事件处理程序处于饥饿状态 当您在运行事件循环的情况下以交互方式运行时(例如在wish或tkcon中),通常差别很小 另一种需要注意的形式

我在0之后看到了
的一些用法。我想知道这里的意义是什么,为什么不直接调用命令?换句话说,这里的区别是什么:

after 0 "puts hi"
puts hi

谢谢。

0…
之后的
有效地将提供的命令调用放在事件循环要处理的活动队列的前面,但它位于所有当前计划活动的后面(例如,因为其套接字已可读或其计时器事件已触发)。这将有效地将命令的运行延迟尽可能短,而不会使其他事件处理程序处于饥饿状态

当您在运行事件循环的情况下以交互方式运行时(例如在
wish
tkcon
中),通常差别很小


另一种需要注意的形式是空闲后的
,它延迟命令的执行,直到代码必须进入阻塞等待事件。这在Tk中大量用于图形化更新合并,因为许多不同的事件一次交付是很常见的,例如,一次更改窗口的大小、焦点状态、鼠标位置和重新绘制所需的属性。纯Tcl脚本几乎不需要这个特性