Elm Language
Ccapndave / elm-update-extra के साथ जटिल अद्यतन कार्य करना
खोज…
परिचय
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