在 Tcl 中使用命令后
After command usage in Tcl
所以我的理解是 after 命令可以用来延迟脚本或命令的执行,但是当我执行下面的命令时,输出会立即打印出来
命令:
after 4000 [list puts "hello"]
输出:
hello
after#0
问题:为什么这里没有延迟4s输出?
你写的有用;我只是在这样的 tclsh
提示符下尝试了它:
% after 4000 [list puts "hello"]; after 5000 set x 1; vwait x
你有没有写别的东西,比如:
after 4000 [puts "hello"]
在这种情况下,您不会延迟 puts
的执行,而是立即调用它并将其结果(空字符串)用作 after
的参数(这是有效的,但没用)。
将 [list …]
视为一种特殊的引用。
运行交互时的另一种可能性是,您在 运行 宁 after
和启动事件循环之间需要几秒钟(因为回调只是 运行 通过事件循环)。你当然不会在 wish
中看到它——这总是 运行 一个事件循环——但它在 tclsh
中是 可能的 ,因为它不会默认情况下不启动事件循环。但就省略 list
单词的概率而言,我认为这是一个遥远的第二......
所以我的理解是 after 命令可以用来延迟脚本或命令的执行,但是当我执行下面的命令时,输出会立即打印出来
命令:
after 4000 [list puts "hello"]
输出:
hello
after#0
问题:为什么这里没有延迟4s输出?
你写的有用;我只是在这样的 tclsh
提示符下尝试了它:
% after 4000 [list puts "hello"]; after 5000 set x 1; vwait x
你有没有写别的东西,比如:
after 4000 [puts "hello"]
在这种情况下,您不会延迟 puts
的执行,而是立即调用它并将其结果(空字符串)用作 after
的参数(这是有效的,但没用)。
将 [list …]
视为一种特殊的引用。
运行交互时的另一种可能性是,您在 运行 宁 after
和启动事件循环之间需要几秒钟(因为回调只是 运行 通过事件循环)。你当然不会在 wish
中看到它——这总是 运行 一个事件循环——但它在 tclsh
中是 可能的 ,因为它不会默认情况下不启动事件循环。但就省略 list
单词的概率而言,我认为这是一个遥远的第二......