Elm函数参数类型不匹配

时间:2018-08-07 21:23:32

标签: function elm

我在榆树中有一个带有此签名的功能:

updateThing : ThingMsg -> Model -> Model
updateThing dmsg model =
    case dmsg of
        Name name->
            let ...

并尝试这样称呼它:

updateThing( Name "Test", model )

但是得到参数不匹配的编译错误:

   The argument to function `updateThing` is causing a mismatch.

   24| updateThing( Name "Test", model )
                                                                                                          ^^^^^^^^^^^^^^^^^^^^^^
   Function `updateThing` is expecting the argument to be:

       ThingMsg

   But it is:

       ( ThingMsg, Model )

我肯定会是我想念的东西(ThingMsg,Model)?

1 个答案:

答案 0 :(得分:4)

要使用参数fa调用函数b,您需要在Elm中使用以下代码:

f a b

以下语法:

f(a, b)

将使用参数f调用(a, b)

(a, b)表示Elm中的元组,它是固定长度的数据结构。

如果您来自其他语言,它具有函数调用的第二种语法,则可能不方便。这就是为什么类型不匹配的原因。编译器希望接收ThingMsg作为第一个参数,但是您要提供一个元组( Name "Test", model ),其类型为( ThingMsg, Model )

要解决该错误,只需将您的调用代码更正为:

updateThing (Name "Test") model