Erlang 基础语法

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

  1. % hello world program
  2. -module(helloworld).
  3. -export([start/0]).
  4. start() ->
  5. io:fwrite("Hello, world!\n").

对上述程序需要注意下面的一些事项

  • %符号是用来在程序中添加注释的;

  • 模块声明中,就像其它编程语言中的命名空间一样。所以在这里,这个代码将是一个叫作 helloworld 模块的一部分;

  • export 函数用于使得程序中定义的任何函数都可以使用。我们定义了一个名为 start 的函数,但是如果要使用 start 函数,我们必须使用 export 语句。而 /0 则表 start 函数接受 0 个参数。

  • 最后,我们定义 start 函数。在这里,我们使用一个模块: io ,这个模块在 Erlang 中提供有输入输出功能。 我们使用 fwrite 函数来输出 “Hello World” 到控制台。

上述程序保存到一个文件:helloworld.erl,并放到 D:\worsp 目录下,打开终端,进入到 D:\worsp 目录下,执行以下命令,将会输出如下结果 -

Erlang 基础语法 - 图1

语句的一般形式

你可能已经看到在 Erlang 语言中使用不同的符号。让我们通过一个简单的 Hello World 程序来说明 -

  • 连字符符号(-)通常与module, import 和 export 语句一起使用。连字符符号一种用来为每个语句给出相应意思的。因此,在 Hello World 程序的例子有下面两个语句
  1. -module(helloworld).
  2. -export([start/0]).

每个语句分隔用点(.)符号。在 Erlang 中每个语句需要使用此分隔符作为这个语句的结束。在 Hello World 程序的例子程序如图所示

  1. io:fwrite("Hello, world!\n").
  • 斜线(/)符号用于函数定义其接受的参数数量,如下 0 表示无参数传递
  1. -export([start/0]).

模块

在Erlang中,所有的代码都会分为模块。一个模块是由一系列的属性和函数声明来组成。它就类似于在其他编程语言中的命名空间,用来在不同的代码单元的逻辑上分开是同一个概念的。

定义模块

模块使用 module 标识符定义。一般语法及其示例如下。

语法

  1. -module(ModuleName)

模块名称必须与文件名减去扩展名 .erl 后相同。否则,预期代码将无法加载正常工作。

语法

  1. -module(helloworld)

这些模块在随后的章节中被覆盖,这只是让你对模块应当如何定义有一个基本的理解。

Erlang中的 import 语句

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

示例

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

在这里,

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

  • functionname/parameter − 这是要被导入的在模块中的函数

让我们修改之前写的 Hello World 程序,在其中使用一个 import 语句。

如下面的示例程序中所示:

  1. % hello world program
  2. -module(helloworld).
  3. -import(io,[fwrite/1]).
  4. -export([start/0]).
  5. start() ->
  6. fwrite("Hello, world!\n").

在上面的代码中,我们使用 import 关键字导入库 “io”,并指定 fwrite 函数。所以,现在每当调用 fwrite 函数时,我们不必再加上 io 这个模块名称。

Erlang中的关键词

关键字是在 Erlang 中一个保留字,不应被用于其目的之外的其他任何不同的目的。

以下是 Erlang 中的关键字列表。

afterandandalsoband
beginbnotborbsl
bsrbxorcasecatch
conddivendfun
ifletnotof
ororelsereceiverem
trywhenxor

Erlang中的注释

注释用于在代码中注释(注解)说明代码。单行注释用 % 符号在该行的任何位置来识别。

以下是使用注释的一个例子

示例

  1. % hello world program
  2. -module(helloworld).
  3. % import function used to import the io module
  4. -import(io,[fwrite/1]).
  5. % export function used to ensure the start function can be accessed.
  6. -export([start/0]).
  7. start() ->
  8. fwrite("Hello, world!\n").