模块( Modules)
模块是在单个文件中以单个名称重新组合的一组函数。 此外,Erlang中的所有函数都必须在模块中定义。
算术,逻辑和布尔运算符等大多数基本功能已经可用,因为在运行程序时会加载默认模块。 您将使用的模块中定义的每个其他函数都需要使用Module:Function (Arguments)形式调用。
定义模块
使用模块,您可以声明两种内容:函数和属性。 属性是描述模块本身的元数据,例如其名称,应该对外部世界可见的函数,代码的作者等。 这种元数据很有用,因为它为编译器提供了如何完成其工作的提示,同时也因为它允许人们从编译的代码中检索有用的信息而无需查阅源代码。
函数声明的语法如下 -
语法 (Syntax)
-module(modulename)
其中, modulename是模块的名称。 这必须是模块中代码的第一行。
以下程序显示了一个名为helloworld的模块示例。
例子 (Example)
-module(helloworld).
-export([start/0]).
start() ->
io:fwrite("Hello World").
上述计划的输出是 -
输出 (Output)
Hello World
模块属性
模块属性定义模块的某个属性。 模块属性由标记和值组成。
属性的一般语法是 -
语法 (Syntax)
-Tag(Value)
以下程序显示了如何使用该属性的示例 -
例子 (Example)
-module(helloworld).
-author("TutorialPoint").
-version("1.0").
-export([start/0]).
start() ->
io:fwrite("Hello World").
上述程序定义了2个名为author和version的自定义属性,分别包含程序作者和程序版本号。
上述计划的输出是 -
输出 (Output)
Hello World
Pre-built Attributes
Erlang有一些预先构建的属性,可以附加到模块。 我们来看看它们。
Export
exports属性将获取要导出以供其他模块使用的函数和arity列表。 它将定义模块接口。 我们之前的所有例子都已经看到了这一点。
语法 (Syntax)
export([FunctionName1/FunctionArity1,.,FunctionNameN/FunctionArityN])
Where,
FunctionName - 这是程序中函数的名称。
FunctionArity - 这是与函数关联的参数数量。
例子 (Example)
-module(helloworld).
-author("TutorialPoint").
-version("1.0").
-export([start/0]).
start() ->
io:fwrite("Hello World").
上述计划的输出将是 -
输出 (Output)
Hello World
Import
import属性用于从另一个模块导入函数以将其用作本地函数。
语法 (Syntax)
-import (modulename , [functionname/parameter]).
Where,
Modulename - 这是需要导入的模块的名称。
functionname/parameter - 需要导入的模块中的函数。
例子 (Example)
-module(helloworld).
-import(io,[fwrite/1]).
-export([start/0]).
start() ->
fwrite("Hello, world!\n").
在上面的代码中,我们使用import关键字导入库'io',特别是fwrite函数。 所以,现在每当我们调用fwrite函数时,我们都不必在任何地方提到io模块名称。
上述计划的输出将是 -
输出 (Output)
Hello, world!