2011-12-30 54 views
4

我正在用GUI編寫haskell程序。當我寫下面一段代碼忽略Haskell中的事件

onClicked btn $ do 
      print 1 

    onClicked btn $ do 
      print 2 

按BTN導致打印1和2同時 如何可以覆蓋函數定義,使得所述最後的定義代替第一個和印刷品2只

背景:我在寫一個掃雷遊戲。當一個按鈕有一個地雷爆炸,然後我嘗試再次玩,並定義相同的按鈕來清除地雷,但由於第一個定義,按下它會再次爆炸地雷。

感謝

回答

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)