睡在 Smalltalk Squeak 中

Inf*_*ted 3 smalltalk squeak

我正在处理 N*N 皇后问题和它的 gui。我想每次移动都睡几秒钟,这样观众就可以看到这个过程。如何让闲聊进入睡眠状态?

谢谢

Pet*_*nak 5

您可以等待,而不是睡觉。

5 seconds asDelay wait.
Run Code Online (Sandbox Code Playgroud)

例如,如果您选择并打印以下内容,它将在打印结果前等待 5 秒 (2)

[
    5 seconds asDelay wait.
    1 + 1
] value
Run Code Online (Sandbox Code Playgroud)

Delay班级的评论解释了它的作用。

我是进程可能暂停一段时间的主要方式。最简单的用法是这样的:

(延迟秒:5)等待。

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.
Run Code Online (Sandbox Code Playgroud)