假設我有一個事件觸發器我想在觸發時做兩件事情。首先,我想讓它更新一些行爲的值。其次,如果滿足其他條件,我想讓它觸發另一個事件send_off與更新的行爲值。用代碼形式表示,假設我有reactive-banana:包含行爲的最新值的射擊事件
trigger :: Event b
trigger = ...
updateFromTrigger :: b -> (a -> a)
updateFromTrigger = ...
conditionFromTrigger :: b -> Bool
conditionFromTrigger = ...
behavior :: Behavior a
behavior = accumB initial_value (updateFromTrigger <$> trigger)
send_off :: Event a
send_off = ?????? (filterE conditionFromTrigger trigger)
然後問題是:我在什麼位置?以便send_off發送最新的值爲的行爲,其中我的意思是包含從更新的值觸發剛剛應用到它。
不幸的是,如果我理解正確,行爲的語義是這樣的,更新後的值不是立即可用的,所以我唯一的選擇基本上是複製工作並重新計算更新後的行爲值,可以在另一個事件中立即使用它,即填寫?喜歡的東西
send_off =
flip updateFromTrigger
<$>
behavior
<@>
filterE conditionFromTrigger trigger
現在,有我在其中可以使用,而不是行爲離散製造中的行爲提供給我更新的信息,馬上從某種意義上說,但實際上這只是相當於給我一個與我的原始事件同時被更新的價值的事件,除非我錯過了一些反應 - 香蕉不會讓我有辦法在兩個其他事件同時發射時才發射事件;也就是說,它提供了事件的聯合而不是交叉點。
所以我有兩個問題。首先,我對這種情況的理解是否正確,特別是我的結論是否正確:我的解決方案是解決問題的唯一方法?其次,純粹出於好奇,開發商是否有任何想法或計劃來處理事件的交叉點?
任何時候我們可能會期待更新的意義? :-) –
@GregoryCrosswhite:你一直在問很好的問題。 ;-)我爲新的內部構思設計了一個漂亮的設計,但實現它需要一段時間。 –