Erlang模块

Erlang模块

模块是在一个单一的文件重新组合的函数,在一个单一的名称。此外,在 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 有可连接到模块的某些预先内置构建的属性,让我们来看看。

导出

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

语法

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!