我正在用 GUI 编写一个 Haskell 程序。当我编写以下代码时
onClicked btn $ do
print 1
onClicked btn $ do
print 2
按 btn 导致同时打印 1 和 2
如何覆盖函数定义,以便最后一个定义替换第一个定义并仅打印 2
背景:我正在编写一个扫雷游戏。当一个按钮有地雷时,它会爆炸,然后我尝试再次播放并定义要清除地雷的相同按钮,但由于第一个定义,再次按下它会爆炸地雷。
谢谢
最佳答案
使用 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)
关于user-interface - 在 Haskell 中覆盖事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8680014/