我正在基于他们的tutorial尝试Elm,并且遇到了函数参数声明的问题。
基本上我只是在教程代码中提取了一个函数。它在没有函数声明的情况下工作正常,但在包含它时失败。
代码的本质是:
type Msg
= Name String
| Password String
view : Model -> Html Msg
view model =
div []
[ myInput "text" "Name" Name
]
myInput : String -> String -> Msg -> Html Msg
myInput type__ label handle =
input [ type_ type__, placeholder label, onInput Name ] []
错误信息是:
函数myInput
的第三个参数导致不匹配。
47 | myInput" text" "名称"名称
函数myInput
期望第三个参数为:
消息
但它是:
字符串 - >消息
提示:看起来函数需要多一个参数。
理想情况下,我还希望onInput的参数是名为" handle"的参数,在myInput中声明。
答案 0 :(得分:4)
myInput
的类型签名不正确。构造函数Name
有一个参数,这意味着当用作函数时,其签名为(String -> Msg)
。这就是您应该用于handle
参数注释的内容。
myInput : String -> String -> (String -> Msg) -> Html Msg
myInput type__ label handle =
input [ type_ type__, placeholder label, onInput handle ] []