2016-05-26 10 views
4

Warum zeigt Platform.Sub keine Filterfunktionen? Es wäre wirklich praktisch, eine Funktion wie filterMap : (a -> Maybe msg) -> Sub a -> Sub msg zu haben, um zum Beispiel auf Ereignisse auf einigen Schlüsseln zu hören, aber nicht auf anderen.Warum kann ich ein Abonnement nicht filtern?

Kann diese Funktionalität auf andere Weise implementiert werden, und ist das eine gute Idee?

Antwort

4

Während ich nicht auf seine Abwesenheit sprechen kann (filterMap scheint sicherlich vernünftig), können Sie eine Abhilfe haben durch einen Filter/Karte vor Ihrer update Funktion tun und Karte auf eine NoOp Meldung, wenn Sie einen Filter zurück Nothing:

import Maybe 

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

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

Ihr NoOp Fall in der update Funktion würde nur model ! [] zurück.