Erlang模块与Erlang程序的运行方法

Posted IT萌新

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Erlang模块与Erlang程序的运行方法相关的知识,希望对你有一定的参考价值。

一、模块与程序文件

    Erlang是一种函数式编程语言,当我们要完成一个项目时,总不可能把所有的函数都定义在一个程序文件中,为了开发和维护方便,通常按逻辑功能划分将其分别分散在多个程序文件中。

    每个Erlang程序文件就是一个模块,文件名的扩展名部分为.erl,模块的名称必须与文件名称中的主文件名完全相同(不包括扩展名.erl)。

    在Erlang程序文件中,用以下模块指令来命名模块,其形式如下:

    -module(mname).

    我们并不希望一个Erlang模块中的所有函数可以在模块外部随意调用,因为有的函数是不允许或不需要从模块外调用,所以模块中的函数在外部是不能随意调用的,只有在模块中被导出的函数才可以在外部被调用,导入指令形式如下:

    -export([hw/0,...]).

    其中,[hw/0]为所有被导出函数的列表,导出时用函数名和参数个数作为导出函数的依据,中间用“/”分隔。

    然而,在模块的调试阶段,为了方便测试模块内部的函数功能,用export一个个导出又比较麻烦,这时可以使用模块指令compile一次导出所有函数:

    -compile(export_all).

    以下为一个简单程序文件(模块):

%filename: hw.erl  

-module(hw).  

-export([start/0]).  

-compile(export_all).  


start() ->  

    io:format("Hello World!~n").

    二、Erlang程序文件运行

    Erlang程序的运行一般需要两个步骤,即编译和运行。通过编译生成与程序文件的主文件名相同而扩展名为.beam的文件,然后就可以运行了。要运行Erlang程序,可以在Erlang的交互式命令行下或直接在命令行下编译后运行。

    1.在交互式环境下编译与运行,其过程如下图:

    注:

    命令行1中调用cd()函数,切换当前目录至源程序的目录下。

    命令行2中调用c()函数,对hw.erl文件进行编译。(此处出现了导出所有函数的警告)

    命令行3中通过hw:start()调用了程序中的函数,显示出了程序的运行结果。

    2.直接在命令提示符下编译和运行Erlang的程序文件


    注:

    命令行1使用erlc命令对程序文件进行编译,显示的警告信息和交互模式下相同。

    命令行2使用erl命令来调用模块中的函数运行程序。其参数-noshell指示不启动交互式环境;-s hw start表示调用hw模块中的start函数;-s init stop是通过调用函数退出erlang运行环境。


以上是关于Erlang模块与Erlang程序的运行方法的主要内容,如果未能解决你的问题,请参考以下文章

Erlang的从属模块:代码和IO分发

如何在Elixir或Erlang中在运行时动态创建和加载模块?

Erlang 标准模块与使用手册

Erlang 模块向 shell 程序发送和接收消息

erlang热更新的实现与原理

如何为erlang中的模块生成AST?