0
我是榆樹和函數式編程的新手。希望這是一個簡單的問題。我想要做的是,當我更改視圖時,我希望榆樹可以根據它將要改變的視圖來獲取記錄。我希望我可以在基於currentRoute的urlUpdate方法中執行此操作。我有兩個視角,一個視角和一個視角,兩者都有獨立的命令對象。我試圖做這樣的:在urlUpdate上加載不同的資源elm
urlUpdate : Result String Route -> Model -> (Model, Cmd Msg)
urlUpdate result model =
let
currentRoute =
Routing.routeFromResult result
_ =
Debug.log "Current Route" currentRoute
in
if toString currentRoute == "PerksRoute" then
({ model | route = currentRoute }
, Perks.Commands.fetchAll
)
else if toString currentRoute == "PlayersRoute" then
({ model | route = currentRoute }
, Players.Commands.fetchAll
)
else
({ model | route = currentRoute }, Cmd.none)
但是我得到這個錯誤:
The 1st branch has this type:
({ a | route : Route }, Cmd Perks.Messages.Msg)
But the 2nd is:
({ a | route : Route }, Cmd Players.Messages.Msg)
我不知道爲什麼發生這種情況,我認爲有這種類型的定義是好。
type Msg
= PlayersMsg Players.Messages.Msg
| PerksMsg Perks.Messages.Msg
以下是完整的src
感謝您的回答,它的作品!你能解釋一下這是怎麼回事,我正在看文檔,但仍然不能完全理解它。 Cmd.map的簽名是(a - > msg) - > Cmd a - > Cmd msg。第一個參數是PlayersMsg,它不是一個函數? – smogger914
'PlayersMsg'和'PerksMsg'都是類型構造函數,每個構造函數接受一個參數並返回一個'Messages.Msg'值。在這個意義上,類型構造函數可以被認爲是函數,這就是爲什麼它們適合作爲第一個參數的'Cmd.map'。 –
難題,這是有道理的看'型消息 = PlayersMsg Players.Messages.Msg | PerksMsg Perks.Messages.Msg | PicturesMsg Pictures.Messages.Msg | NavMsg Components.Nav.Messages.Msg'!謝謝(你的)信息。 – smogger914