📅  最后修改于: 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!