📜  Erlang-基本语法

📅  最后修改于: 2020-11-04 05:47:27             🧑  作者: Mango


为了理解Erlang的基本语法,我们首先来看一个简单的Hello World程序。

% hello world program
-module(helloworld). 
-export([start/0]). 

start() -> 
   io:fwrite("Hello, world!\n").

关于上述程序,需要注意以下几点:

  • %符号用于向程序添加注释。

  • 模块语句就像在任何编程语言中添加名称空间一样。所以在这里,我们提到的是这段代码将成为名为helloworld的模块的一部分。

  • 使用导出函数,以便可以使用程序中定义的任何函数。我们定义了一个名为start的函数,为了使用start函数,我们必须使用export语句。 / 0表示我们的函数“ start”接受0个参数。

  • 我们终于定义了启动函数。在这里,我们使用另一个名为io的模块,该模块在Erlang中具有所有必需的Input Output函数。我们使用fwrite函数将“ Hello World”输出到控制台。

上面程序的输出将是-

输出

Hello, world!

声明的一般形式

在Erlang中,您已经看到Erlang语言中使用了不同的符号。让我们看一下从一个简单的Hello World程序中看到的内容-

  • 连字符(–)通常与模块,导入和导出语句一起使用。连字符用于为每个语句赋予相应的含义。因此,Hello world程序的示例显示在以下程序中-

-module(helloworld).
-export([start/0]).

每个语句都用点(。)符号分隔。 Erlang中的每个语句都需要以该定界符结尾。 Hello world程序的示例如下例所示:

io:fwrite("Hello, world!\n").
  • 的斜杠(/)符号用于沿着与该函数来定义的,其是由函数接受参数的数量。

-export([start/0]).

模组

在Erlang中,所有代码都分为模块。模块由一系列属性和函数声明组成。就像其他编程语言中的名称空间的概念一样,该名称空间用于逻辑上分离不同的代码单元。

定义模块

使用模块标识符定义模块。通用语法和示例如下。

句法

-module(ModuleName)

ModuleName必须与文件名减去扩展名.erl相同。否则,代码加载将无法按预期进行。

-module(helloworld)

这些模块将在随后的章节中详细介绍,这只是为了使您基本了解应如何定义模块。

Erlang中的导入声明

在Erlang中,如果要使用现有Erlang模块的功能,则可以使用import语句。以下程序描述了import语句的一般形式-

-import (modulename, [functionname/parameter]).

哪里,

  • Modulename-这是需要导入的模块的名称。

  • 函数名称/参数-模块中需要导入的函数。

让我们更改编写hello world程序以使用import语句的方式。该示例将在以下程序中显示。

% hello world program
-module(helloworld).
-import(io,[fwrite/1]).
-export([start/0]).

start() ->
   fwrite("Hello, world!\n").

在上面的代码中,我们使用import关键字导入库io,尤其是fwrite函数。因此,现在无论何时调用fwrite函数,我们都不必在任何地方都提到io模块的名称。

Erlang中的关键字

关键字是Erlang中的保留字,不得将其用于预定目的以外的其他目的。以下是Erlang中的关键字列表。

after and andalso band
begin bnot bor bsl
bsr bxor case catch
cond div end fun
if let not of
or orelse receive rem
try when xor

评论在Erlang

注释用于记录您的代码。通过在行中的任何位置使用符号来标识单行注释。以下是相同的示例-

% hello world program
-module(helloworld).
% import function used to import the io module
-import(io,[fwrite/1]).
% export function used to ensure the start function can be accessed.
-export([start/0]).

start() ->
   fwrite("Hello, world!\n").