📜  Erlang-模块

📅  最后修改于: 2020-11-04 05:51:10             🧑  作者: Mango


模块是一堆功能,以单个名称重新组合在一起。此外,必须在模块中定义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属性用于从另一个模块导入函数以将其用作本地。

句法

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

哪里,

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

  • 函数名称/参数-模块中需要导入的函数。

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

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

在上面的代码中,我们使用import关键字导入库io,尤其是fwrite函数。因此,现在无论何时调用fwrite函数,我们都不必在任何地方都提到io模块的名称。

上面程序的输出将是-

输出

Hello, world!