onInput参数失败(由Elm n00b提供)

时间:2017-09-25 20:39:27

标签: elm

我正在基于他们的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中声明。

1 个答案:

答案 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 ] []