Erlang 模块
模块是在单个文件中以单个名称重新组合的一组函数。此外,Erlang中的所有函数都必须在模块中定义。
大多数基本功能,如算术、逻辑和布尔运算符已经可用,因为默认模块是在程序运行时加载的。您将要使用的模块中定义的每个其他函数都需要使用 Module: Function (Arguments) 的形式来调用。
定义模块
使用模块,可以声明两种类型的内容:函数和属性。属性是描述模块本身的元数据,比如它的名称、应该对外界可见的函数、代码的作者等等。这种元数据很有用,因为它向编译器提示它应该如何完成它的工作,还因为它允许人们从编译后的代码中检索有用的信息,而不必查阅源代码。
函数声明的语法如下 :
语法
-module(modulename)
这里,modulename是模块的名称。这必须在模块代码的第一行。下面的程序显示了一个叫helloworld模块的一个实例。
示例
-module(helloworld).-export([start/0]).start()->io:fwrite("HelloWorld").
上面的代码的输出结果是-
HelloWorld
模块属性
模块属性定义模块的特定属性,模块属性由标记和值组成。
属性的一般语法是-
语法
-Tag(Value)
下面的实例程序是用来演示模块属性如何使用-
示例
-module(helloworld).-author("TutorialPoint").-version("1.0").-export([start/0]).start()->io:fwrite("HelloWorld").
以上程序定义2个自定义属性:author和version,分别用来表示该程序的作者和版本号。
上面的代码的输出结果是-
HelloWorld
预先内置属性
Erlang有可连接到模块的某些预先内置构建的属性,让我们来看看。
导出
导出属性将使用函数和参数数量列表导出到其他模块。它将定义模块接口。我们在前面的实例中已经看到了这一点。
语法
export([FunctionName1/FunctionArity1,.,FunctionNameN/FunctionArityN])
在这里,
FunctionName−这是程序中的函数名称;
FunctionArity−这是与函数相关联的参数数目;
示例
-module(helloworld).-author("TutorialPoint").-version("1.0").-export([start/0]).start()->io:fwrite("HelloWorld").
上面的代码的输出结果是-
HelloWorld
导入
导入属性用于从另一模块导入函数以将其在本地使用
语法
-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!