2016-05-26 69 views
4

爲什麼Platform.Sub不公開任何過濾功能?有一個像filterMap : (a -> Maybe msg) -> Sub a -> Sub msg這樣的函數來監聽某些按鍵上的事件,而不是其他按鍵,這將非常方便。爲什麼我無法過濾訂閱?

該功能是否可以另一種方式實現,這是一個好主意嗎?

回答

4

雖然我不能給它的缺席說話(當然filterMap似乎是合理的),你可以通過你的update功能之前,做一個過濾器/地圖有一種變通方法,並映射到一個NoOp消息時,你的過濾器返回Nothing

import Maybe 

yourFilterFunction : Msg -> Maybe Msg 
yourFilterFunction = ... 

main = 
    Html.program 
    { init = init 
    , view = view 
    , update = update << Maybe.withDefault NoOp << yourFilterFunction 
    , subscriptions = subscriptions 
    } 

NoOp情況下,在update功能將只返回model ! []