खोज…


परिचय

ccapndave / elm-update-extra एक शानदार पैकेज है जो आपको अधिक जटिल अपडेटिंग कार्यों को संभालने में मदद करता है, और बहुत उपयोगी हो सकता है।

संदेश जो संदेश की एक सूची कहते हैं

sequence फ़ंक्शन का उपयोग करके आप आसानी से एक संदेश का वर्णन कर सकते हैं जो अन्य संदेशों की सूची को कॉल करता है। आपके संदेशों के शब्दार्थ से निपटने के दौरान यह उपयोगी है।

उदाहरण 1: आप एक गेम इंजन बना रहे हैं, और आपको हर फ्रेम में स्क्रीन को रीफ्रेश करना होगा।

module Video exposing (..)
type Message = module Video exposing (..)

import Update.Extra exposing (sequence)

-- Model definition [...]

type Message
    = ClearBuffer
    | DrawToBuffer
    | UpdateLogic
    | Update

update : Message -> Model -> (Model, Cmd)
update msg model =
    case msg of
        ClearBuffer ->
            -- do something
        DrawToBuffer ->
            -- do something
        UpdateLogic ->
            -- do something
        Update ->
            model ! []
                |> sequence update [ ClearBuffer
                                   , DrawToBuffer
                                   , UpdateLogic]

के साथ संदेश भेज रहा है और फिर

andThen फ़ंक्शन अपडेट कॉल संरचना की अनुमति देता है। श्रृंखला अद्यतन के लिए पाइपलाइन ऑपरेटर ( |> ) के साथ उपयोग किया जा सकता है।

उदाहरण: आप एक दस्तावेज़ संपादक बना रहे हैं, और आप चाहते हैं कि प्रत्येक संशोधन संदेश जो आप अपने दस्तावेज़ को भेजें, आप उसे भी सहेज लें:

import Update.Extra exposing (andThen)
import Update.Extra.Infix exposing (..)

-- type alias Model = [...]

type Message
    = ModifyDocumentWithSomeSettings
    | ModifyDocumentWithOtherSettings
    | SaveDocument

update : Model -> Message -> (Model, Cmd)
update model msg =
    case msg of
        ModifyDocumentWithSomeSettings ->
            -- make the modifications
            (modifiedModel, Cmd.none)
            |> andThen SaveDocument
        ModifyDocumentWithOtherSettings ->
            -- make other modifications
            (modifiedModel, Cmd.none)
            |> andThen SaveDocument
        SaveDocument ->
            -- save document code

यदि आप भी Update.Extra.Infix exposing (..) आयात करते हैं। Update.Extra.Infix exposing (..) आप infix ऑपरेटर का उपयोग करने में सक्षम हो सकते हैं:

update : Model -> Message -> (Model, Cmd)
update model msg =
    case msg of
        ModifyDocumentWithSomeSettings ->
            -- make the modifications
            (modifiedModel, Cmd.none)
            :> andThen SaveDocument
        ModifyDocumentWithOtherSettings ->
            -- make other modifications
            (modifiedModel, Cmd.none)
            :> SaveDocument
        SaveDocument ->
            -- save document code


Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow