睡在Smalltalk吱吱声

时间:2016-05-05 14:19:01

标签: smalltalk squeak

我正在处理N * N皇后问题和gui。 我希望每次移动都能睡几秒钟,这样观众就可以看到这个过程。 我如何让smalltalk入睡?

谢谢

1 个答案:

答案 0 :(得分:4)

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

5 seconds asDelay wait.

e.g。如果您选择并打印以下内容,则会在打印结果前等待5秒钟(2)

[
    5 seconds asDelay wait.
    1 + 1
] value

Delay课程的评论解释了它的作用。

  

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

     

(Delay forSeconds:5)等待。

     

延迟实例通过暂停调用者的进程一段时间来响应消息“wait”。使用消息forMilliseconds:或forSeconds:创建Delay时,指定暂停的持续时间。当前等待结束后,可以再次使用延迟。例如,时钟进程可能会反复等待一秒延迟。

     

重新启动快照时,将恢复保存图像快照时的延迟。延迟工作跨越毫秒时钟翻转。

     

有关更复杂的示例,请参阅#testDelayOf:for:rect:。

更新(根据评论)

wait将暂停执行流程,这意味着在前面的示例中,1 + 1仅在等待期结束后才会执行(执行流程已恢复)。

所以在你的班上你可以......

MyBoard>>doStep
    self drawBoard.
    5 seconds asDelay wait.
    self solve.
    5 seconds asDelay wait.
    self destroyBoard.