主模块中的多个语句

问题描述 投票:2回答:1

如何在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?

括号和逗号没有用。

syntax-error elm
1个回答
7
投票

榆树是一种基于表达的语言。它没有语句,因为它没有副作用。相反,它由表达式组成,这些表达式返回与在编译时验证的类型相关联的值。

您的代码在语法上是一个有效的表达式,所以我不确定您是如何得到该特定错误的。我不能直接在顶层,表达式不属于它,或者在表达式属于的函数中重现它,但我得到一个类型错误而不是语法错误。你遗漏了代码的一些重要部分。

在任何情况下,即使你把它正确地放入一个函数中,这也不会做你想要的。即便如此,还有很多问题:

  1. 您的代码将被解释为应用于函数text'1'text'2'的三个参数,因为换行符并不重要。
  2. '1'是一个字符文字,而不是字符串文字。 "1"是一个字符串文字。
  3. 无论你打算用什么,它很可能需要一个元素,而不是一个元素列表。

将两个元素作为一个返回的正确方法是将两个元素包装在父元素中,例如'span':

module Main exposing (main)

import Html exposing (text, span)

main =
    span []
        [ text "1"
        , text "2"
        ]

最后,我建议您按照the official Elm guide开始学习。榆树的不同之处在于基于JavaScript中可能起作用的试错方法可能只会导致挫败感。

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.