syntax-error - 主模块中的多个语句
问题描述
如何在 Elm 主模块中放置多行语句
例子,
module Main exposing (main)
import Html exposing (text)
main =
text "1"
text "2"
以上不起作用并给出此错误
Detected errors in 1 module.
-- TOO MANY ARGS -------------------------------------------------- src/Main.elm
The `text` function expects 1 argument, but it got 3 instead.
5|> text "1"
6| text "2"
Are there any missing commas? Or missing parentheses?
加上括号和逗号没有帮助。
解决方案
Elm 是一种基于表达式的语言。它没有语句,因为它没有副作用。相反,它由表达式组成,这些表达式返回与在编译时验证的类型相关联的值。
您的代码在语法上是一个有效的表达式,所以我不确定您是如何得到该特定错误的。我无法直接在不属于表达式的顶层或在表达式确实属于的函数中重现它,但我得到的是类型错误而不是语法错误。您遗漏了代码的一些重要部分。
无论如何,即使你把它正确地放入一个函数中,它也不会做你想要的。即便如此,仍然存在多个问题:
您的代码将被解释为应用于函数
text
、'1'
、text
和的三个参数'2'
,因为换行符并不重要。'1'
是字符文字,而不是字符串文字。"1"
是一个字符串文字。无论您要使用它,它很可能需要一个元素,而不是元素列表。
返回两个元素作为一个元素的正确方法是将两个元素包装在父元素中,例如“span”:
module Main exposing (main)
import Html exposing (text, span)
main =
span []
[ text "1"
, text "2"
]
最后,我建议您按照Elm 官方指南开始学习。Elm 的不同之处在于,基于 JavaScript 中常用的试错方法可能只会导致挫败感。
推荐阅读
- c# - 使用反射更改特定模型中的所有变量
- bash - 创建具有不同 PATH 的 shell
- javascript - 拆分很长的javascript字符串
- graph - 遍历有限制的图
- javascript - 该函数应返回一个包含城市、逗号和空格、州、空格和邮政编码的字符串
- visual-studio-code - VSCode 在launch.json 中添加条件以根据文件类型进行区分
- c - avr-ld:输入文件“main.o”的 avr:51 架构与 avr 输出不兼容
- unity3d - 网络大厅等到所有玩家场景加载完毕
- cassandra - DSE 搜索获取列的不同计数
- c# - AOT:找不到图像“...dll.so”