我正在处理 N*N 皇后问题以及它的图形用户界面。 我希望每次移动后能休眠几秒钟,以便观察者可以看到整个过程。 如何让 Smalltalk 程序休眠?
谢谢。
不需要睡觉,你可以等待。
5 seconds asDelay wait.
例如,如果您选择并打印以下内容,则在打印结果(2)之前会等待5秒钟。
[
5 seconds asDelay wait.
1 + 1
] value
Delay
类的注释解释了它的作用。
我是进程暂停一段时间的主要方法。最简单的使用方式如下:
(Delay forSeconds: 5) wait.
Delay
类的实例通过响应 'wait' 消息来暂停调用者进程的执行一段时间。当创建Delay
实例时,可以使用 forMilliseconds: 或 forSeconds: 消息指定暂停的持续时间。当前等待结束后,可以再次使用Delay
。例如,时钟进程可能会在一个一秒钟的Delay
上重复等待。保存图像快照时,如果存在正在进行的延迟,则在重新启动快照时恢复延迟。延迟可跨越毫秒级时钟回滚。
有关更复杂的示例,请参见 #testDelayOf:for:rect:。
更新:(基于评论)
wait
将暂停执行流程,这意味着在之前的示例中,只有在等待期间结束后,1 + 1
才会被执行(执行流程恢复)。
因此,在您的类中,您可以有...
MyBoard>>doStep
self drawBoard.
5 seconds asDelay wait.
self solve.
5 seconds asDelay wait.
self destroyBoard.