Erlang 模块

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

大多数基本功能,如算术、逻辑和布尔运算符已经可用,因为默认模块是在程序运行时加载的。您将要使用的模块中定义的每个其他函数都需要使用 Module: Function (Arguments) 的形式来调用。

定义模块

使用模块,可以声明两种类型的内容:函数和属性。属性是描述模块本身的元数据,比如它的名称、应该对外界可见的函数、代码的作者等等。这种元数据很有用,因为它向编译器提示它应该如何完成它的工作,还因为它允许人们从编译后的代码中检索有用的信息,而不必查阅源代码。

函数声明的语法如下 :

语法

-module(modulename)

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

示例

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

start() -> 
   io:fwrite("Hello World").

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

Hello World

模块属性

模块属性定义模块的特定属性,模块属性由标记和值组成。

属性的一般语法是 -

语法

-Tag(Value)

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

示例

-module(helloworld). 
-author("TutorialPoint"). 
-version("1.0"). 
-export([start/0]). 

start() -> 
   io:fwrite("Hello World").

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

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

Hello World

预先内置属性

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

导出

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

语法

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

在这里,

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

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

示例

-module(helloworld). 
-author("TutorialPoint"). 
-version("1.0"). 
-export([start/0]). 

start() -> 
   io:fwrite("Hello World").

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

Hello World

导入

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

语法

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

在这里,

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

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

示例

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

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

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

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

Hello, world!