Erlang - 基本语法
为了理解 Erlang 的基本语法,我们首先看一个简单的 Hello World 程序。
示例
% hello world program -module(helloworld). -export([start/0]). start() -> io:fwrite("Hello, world!\n").
上述程序需要注意以下几点 −
% 符号用于向程序添加注释。
模块语句就像在任何编程语言中添加命名空间一样。 因此,在这里,我们提到此代码将成为名为 helloworld 的模块的一部分。
使用导出函数,以便可以使用程序中定义的任何函数。 我们正在定义一个名为 start 的函数,为了使用 start 函数,我们必须使用导出语句。 /0 表示我们的函数"start"接受 0 个参数。
我们最终定义了启动函数。 这里我们使用另一个名为 io 的模块,它具有 Erlang 中所有必需的输入输出功能。 我们使用 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 − 这是需要导入的模块的名称。
functionname/parameter − 模块中需要导入的函数。
让我们改变编写 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").