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

来源:互联网 发布:大数据技术经典书籍 编辑:程序博客网 时间:2024/06/04 18:13

    一、模块与程序文件

    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运行环境。


原创粉丝点击