Erlang - 模块

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

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

定义模块

使用模块,您可以声明两种事物:函数和属性。 属性是描述模块本身的元数据,例如模块的名称、对外可见的功能、代码的作者等。 这种元数据很有用,因为它向编译器提供了有关如何完成其工作的提示,还因为它使人们可以从编译的代码中检索有用的信息,而无需查阅源代码。

函数声明的语法如下 −

语法

-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 有一些可以附加到模块的预构建属性。 让我们来看看它们。

导出

exports 属性将采用函数和参数列表来导出以供其他模块使用。 它将定义模块接口。 我们已经在之前的所有示例中看到了这一点。

语法

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

import 属性用于从另一个模块导入函数以将其作为本地使用。

语法

-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 函数时,我们不必到处提及 io 模块名称。

上述程序的输出将是 −

输出

Hello, world!