Elm - 基本语法


本章讨论如何用 elm 编写一个简单的程序。

步骤 1 - 在 VSCode 中创建一个目录 HelloApp

现在,在此目录中创建一个文件 - Hello.elm

创建目录

上图显示了在 VSCode 中打开的项目文件夹HelloApp和终端。

步骤 2 - 安装必要的 elm 软件包

elm 中的包管理器是elm-package。安装elm-lang/html包。这个包将帮助我们在浏览器中显示 elm 代码的输出。

通过右键单击“文件”→“在 VSCode 的命令提示符中打开”,遍历到HelloApp项目文件夹。

在终端窗口中执行以下命令 -

C:\Users\dell\Elm\HelloApp> elm-package install elm-lang/html

安装包时,以下文件/文件夹将添加到项目目录中。

  • elm-package.json(文件),存储项目元数据
  • elm-stuff(文件夹),存放外部包

软件包安装成功后,将出现以下消息。

已安装包

步骤 3 - 将以下代码添加到 Hello.elm 文件中

-- importing Html module and the function text
import Html exposing (text)

-- create main method
main =
-- invoke text function
text "Hello Elm from TutorialsPoint"

上面的程序将在浏览器中显示来自TutorialsPoint的字符串消息Hello Elm 。

为此,我们需要在Html模块中导入功能文本。text 函数用于打印浏览器中的任何字符串值。main 方法是程序的入口点。main方法调用文本函数并向其传递一个字符串值。

第 4 步 - 编译项目

在 VSCode 终端窗口中执行以下命令。

elm make Hello.elm

上述命令的输出如下所示 -

//update path to the proj folder in the command elm make
C:\Users\dell\elm\HelloApp>elm make Hello.elm
Success! Compiled 38 modules.
Successfully generated index.html

上面的命令将生成一个index.html文件。elm 编译器将 .elm 文件转换为 JavaScript 并将其嵌入到index.html文件中。

步骤 5 - 在浏览器中打开index.html

在任何浏览器中打开index.html文件。输出如下所示 -

打开浏览器

榆树中的评论

注释是提高程序可读性的一种方法。注释可用于包含有关程序的附加信息,例如代码作者、有关函数构造的提示等。编译器会忽略注释。

Elm 支持以下类型的评论 -

  • 单行注释 (--) - -- 和行尾之间的任何文本都被视为注释。

  • 多行注释 ({- -}) - 这些注释可能跨越多行。

插图

-- this is single line comment

{- This is a
   Multi-line comment
-}

线条和缩进

Elm 不提供大括号来指示函数定义或流程控制的代码块。代码块由严格执行的行缩进表示。块中的所有语句必须缩进相同的量。例如 -

module ModuleIf exposing (..)
x = 0

function1 =
   if x > 5 then
      "x is greater"
   else
      "x is small"

但是,以下块会生成错误 -

-- Create file ModuleIf.elm
module ModuleIf exposing (..)
x = 0

function1 =
   if x > 5 then
      "x is greater"
         else --Error:else indentation not at same level of if statement
      "x is small"

因此,在 Elm 中,所有缩进相同数量空格的连续行将形成一个块。

C:\Users\admin>elm repl
---- elm-repl 0.18.0 -----------------------------------------------------------
   :help for help, :exit to exit, more at 
   <https://github.com/elm-lang/elm-repl>
   ---------------------------------------
   -----------------------------------------

> import ModuleIf exposing(..) -- importing module from ModuleIf.elm file
>function1 -- executing function from module
-- SYNTAX PROBLEM ---------------------------------------------------

I need whitespace, but got stuck on what looks like a new declaration. 
You are either missing some stuff in the declaration above or just need to add some spaces here:
7| else
   ^
I am looking for one of the following things:

   whitespace