鉴于此代码:
type Msg
= NoOp
| UpdateField ReqRes
type ReqRes a
= Request a
| Response (Result Http.Error Bool)
update : Msg -> Model -> (Model, Cmd Msg)
update msg model =
case msg of
UpdateField reqres ->
case reqres of
Request a ->
-- Do stuff
Response result ->
-- Do stuff
_ ->
-- Do stuff
因此,您可以看到我有一个名为UpdateField的消息,它采用UnionType ReqRes。到现在为止还挺好。但是Union Type有一个通用数据结构(或者包含一个Type变量......这两个意思是一样的吗???)。
现在我的问题是,我不知道如何在此模式匹配。
编译器告诉我这个错误:
...此模式匹配中的问题
模式匹配类型:
ReqRes a
但它实际上要在这里匹配的值是:
ReqRes
答案 0 :(得分:1)
如果您在type ... =
或type alias ... =
后面有一个类型变量(ReqRes a
),它也应该出现在左侧。
同样,如果有a
类型,则应始终看到type Msg
= NoOp
| UpdateField ReqRes
... becomes...
type Msg a
= NoOp
| UpdateField (ReqRes a)
。
因此,以下是代码工作所需的更改:
update : Msg -> Model -> (Model, Cmd Msg)
... becomes...
update : Msg a -> Model -> (Model, Cmd (Msg a))
和
fscanf(result_search_cd,"\n");