Elm空格编译错误排查求助:无法定位语法问题
解决Elm编译时的空格误导错误
嘿,这个错误提示真的很坑人,明明核心问题不是空格,但编译器却往空格上引导!我帮你捋捋:
先看你贴的错误信息:
需要空格,但在新声明处受阻。您可能遗漏了上方声明的内容,或需在此处添加空格:
41| view : Model -> Html -> Msg
^ 我正在寻找以下内容之一:空格。
再对照你的代码片段:
view : Model -> Html -> Msg view model = div [] [ h2 [] [text ("Counter: " ++ (toString model))] , button [type_ "button", onClick ...] ]
问题出在类型签名的错误上,而不是空格:
- Elm中
view函数的标准类型应该是接收Model,返回带消息类型的Html,也就是view : Model -> Html Msg - 你现在写的
view : Model -> Html -> Msg,编译器会理解成“接收Model和Html两个参数,返回Msg”,但你的函数定义只接收一个model参数,这就导致语法解析混乱,编译器才会抛出莫名其妙的空格错误。
所以修正方法很简单,把类型签名改成:
view : Model -> Html Msg
另外顺便提一句,如果你用的是Elm 0.19及以上版本,toString已经被替换成更精准的函数(比如如果你的Model是整数类型,就用String.fromInt),可以顺手改成更规范的写法哦。
内容的提问来源于stack exchange,提问作者Andy
相关产品推荐
相关产品推荐

