Erlang模块

模块是在一个单一的文件重新组合的函数,在一个单一的名称。此外,在 Erlang 所有函数必须在模块定义。

大部分像算术,逻辑和布尔操作符的基本函数已经 Erlang 内部集成提供并且可以直接调用,因为在运行程序时的默认模块被加载。一个模块中使用定义的所有其他函数需要使用形式 Module:Function (参数) 来调用。

定义模块

有了模块,我们可以声明两个东西:函数和属性。属性就类似它的名称,描述模块本身的元数据,这应该是明显的向外界的功能,如:代码作者等等。这种元数据是非常有用的,因为它给编译器提示让它知道怎么做自己的工作,而且它可以让人们检索编译后的代码中的有用信息,而不必征求源代码。

函数声明的语法如下

语法

  1. -module(modulename)

这里,modulename 是模块的名称。这必须在模块代码的第一行。下面的程序显示了一个叫 helloworld 模块的一个例子。

示例

  1. -module(helloworld).
  2. -export([start/0]).
  3. start() ->
  4. io:fwrite("Hello World").

上面的代码的输出结果是:

  1. Hello World

模块属性

模块属性定义模块的某些特性。模块属性包含一个标签和值。

语法

  1. -Tag(Value)

下面的例子程序是用来演示模块属性如何使用

示例

  1. -module(helloworld).
  2. -author("TutorialPoint").
  3. -version("1.0").
  4. -export([start/0]).
  5. start() ->
  6. io:fwrite("Hello World").

以上程序定义2个自定义属性:author 和 version,分别用来表示该程序的作者和版本号。

上面的代码的输出结果是:

  1. Hello World

预先内置属性

Erlang 有可连接到模块的某些预先内置构建的属性,让我们来看看。

导出

导出属性将使用函数和参数数量列表导出到其他模块。它将定义模块接口。我们在前面的例子中已经看到了这一点。

语法

  1. export([FunctionName1/FunctionArity1,.,FunctionNameN/FunctionArityN])

参数说明:

  • FunctionName − 这是程序中的函数名称;

  • FunctionArity − 这是与函数相关联的参数数目;

示例

  1. -module(helloworld).
  2. -author("TutorialPoint").
  3. -version("1.0").
  4. -export([start/0]).
  5. start() ->
  6. io:fwrite("Hello World").

上面的代码的输出结果是:

  1. Hello World

导入

导入属性用于从另一模块导入函数以将其在本地使用

语法

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

参数说明:

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

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

示例

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

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

上面的代码的输出结果是:

  1. Hello, world!