Elm 这个'div'调用生成:Html(String->;Msg),但是'view'上的类型注释说它应该是:Html Msg

Elm 这个'div'调用生成:Html(String->;Msg),但是'view'上的类型注释说它应该是:Html Msg,elm,Elm,我目前正在学习elm,我只是偶然发现了这个问题,div返回一个Html(String->Msg)而不是Html Msg 我收到了错误消息 此div调用生成: Html (String -> Msg) 但是视图上的类型注释说它应该是: Html Msg 您将Msg类型定义为 type Msg = Add String| Minus String 使用Add获取String参数,但在此处使用时: button [onClick Add] [text "add"], 你一点也没在

我目前正在学习elm,我只是偶然发现了这个问题,div返回一个Html(String->Msg)而不是Html Msg

我收到了错误消息

div
调用生成:

Html (String -> Msg)
但是
视图
上的类型注释说它应该是:

Html Msg

您将
Msg
类型定义为

type Msg =
    Add String| Minus String
使用
Add
获取
String
参数,但在此处使用时:

button [onClick Add] [text "add"],
你一点也没在争论

潜在的问题似乎是您对Elm架构的心智模型是错误的。您似乎将消息视为“操作”或函数调用而不是事件,其中“代码>添加/代码>是一个函数,该函数将一个参数应用于模型。

<>你应该考虑一个消息来描述它是什么触发的。您可以将其称为
AddButtonClicked
,而不是
addstring
,不带任何参数(在本例中)。然后让update函数根据模型中的内容执行它应该执行的操作,我猜这是对
firstNum
secondNum
的算术运算

但您也没有填充这些字段。为此,您需要使用
onInput
事件,该事件确实会请求包含
字符串的消息。例如,您可以添加一条新消息
FirstNumChanged String
,然后将其与
input
一起使用,如下所示:

input [ placeholder "Text to reverse", onInput FirstNumChanged, value model.firstNum] [],

我将让您在
update

中找出如何处理它,因为您没有时间将其变成一个答案或研究如何修复,但简而言之,您的错误是,对于某些
x
,您有
onClick Add
应该是
onClick(Add x)
input [ placeholder "Text to reverse", onInput FirstNumChanged, value model.firstNum] [],