4

我正在用 GUI 编写一个 haskell 程序。当我编写以下代码时

    onClicked btn $ do
           print 1

    onClicked btn $ do
           print 2

按 btn 导致同时打印 1 和 2 如何覆盖函数定义,以便最后一个定义替换第一个定义并仅打印 2

背景:我正在写一个扫雷游戏。当一个按钮有地雷时它会爆炸,然后我尝试再次播放并定义要清除地雷的相同按钮,但由于第一个定义,按下它会再次爆炸地雷。

谢谢

4

1 回答 1

6

使用返回的连接onClicked注销事件处理程序:

print1Handler <- onClicked btn (print 1)
signalDisconnect print1Handler
print2Handler <- onClicked btn (print 2)

此外,onClicked已弃用;如果可能,您应该改用新on机制。它的使用非常相似:

print1Handler <- on buttonActivated btn (print 1)
signalDisconnect print1Handler
print2Handler <- on buttonActivated btn (print 2)
于 2011-12-30T16:45:30.910 回答