更新函数联合类型模型elm

时间:2017-04-19 15:03:48

标签: elm

我有一个模特:

type Model
    = InitialScreen
    | ErrorScreen Http.Error
    | List NormalRegion

并更新功能:

update : Msg -> a -> ( Model, Cmd msg )
update msg model =
    case msg of
        FetchFail e ->
            ( ErrorScreen e, Cmd.none )

        ShowRegions dto ->
            ( GeographiesDecoder.toNormalRegions dto.regions dto.countries, Cmd.none )

        HoverRegion r ->
            ( model, Cmd.none )

其中toNormalRegions是

toNormalRegions : List Region -> List Country -> List NormalRegion

编译器在更新fn时抛出错误:

The 1st and 2nd branches of this `case` produce different types of values. - The 1st branch has this type:

    ( Model, Cmd msg )

But the 2nd is:

    ( List NormalRegion, Cmd msg )

有没有办法将List转换为模型?

1 个答案:

答案 0 :(得分:1)

您有一个名为Model的{​​{1}}类型构造函数,它与内置List类型冲突。我怀疑你实际上是在尝试使用实际的区域列表,但这并不是由你编码的代码所代表的。

我认为通过定义一个不重叠的构造函数可以更好地服务:

List