6

反応バナナを使用する場合、UI 要素のコンテンツをどのように取得しますか? event0 は type のイベントを返しますEvent ()。これは、コントロールの型ではなくユニット型です。event1 はタイプ のイベントを受け取りますがEvent w (a -> IO ())、コマンドのタイプはEvent w (IO ())です。mapAccumE と mapAccumB は純粋な関数をパラメーターとして受け取るためget text foo、それらと一緒に使用することはできません。

4

2 に答える 2

4

基本的に、データではなく関数を操作する必要があります。「現在のテキストをボックスに表示する動作を作成するにはどうすればよいか」と考えている場合は、そうではありません。代わりに、現在のテキストをパラメーターとして受け取り、必要に応じて渡す関数を作成します。ボタンが押されたときにテキストボックスの内容を印刷したいとします。次に、次のようにします。

eButton :: NetworkDescription (Event ())
eButton = event0 button command

network = do
  pressButton <- eButton
  reactimate $ (\() -> get text foo >>= print) <$> pressButton

Behavior に入力を取得する必要がある場合は、同様に型 (または必要な型) を持つ関数を使用して、呼び出しBehavior (String -> a)の時点で文字列を渡すだけです。reactimate

于 2011-07-01T17:40:23.177 に答える
4

( reactive-banana Speakingの著者。返信が遅くなって申し訳ありません。ここで質問される可能性は頭に浮かびませんでした。:-) )

今日、ライブラリから非常に重要な機能を省略していたことに気付きました: UI 要素のコンテンツをBehavior. 恥ずかしい!:-D

Johnは現在の回避策について説明していますが、reactive-banana の次のバージョンには不足している機能が含まれる予定です。

EDIT:関数の形で機能を含むリアクティブバナナバージョン0.4をリリースしました

fromPoll :: IO a -> NetworkDescription (Behavior a)
于 2011-07-04T14:31:25.243 に答える