我在榆树中有一个带有此签名的功能:
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)?
答案 0 :(得分:4)
要使用参数f
和a
调用函数b
,您需要在Elm
中使用以下代码:
f a b
以下语法:
f(a, b)
将使用参数f
调用(a, b)
。
(a, b)
表示Elm
中的元组,它是固定长度的数据结构。
如果您来自其他语言,它具有函数调用的第二种语法,则可能不方便。这就是为什么类型不匹配的原因。编译器希望接收ThingMsg
作为第一个参数,但是您要提供一个元组( Name "Test", model )
,其类型为( ThingMsg, Model )
要解决该错误,只需将您的调用代码更正为:
updateThing (Name "Test") model