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!