Erlang 第4讲 - 编译和执行程序

编写完整的程序

  • 文件名如hello.erl,代码如下:
-module(hello).
-export([start/0]).
start() -> 
    io:format("Hello World!\n").

程序解析:

  • 第1行:
    定义模块名,模块名要和文件名一致。
  • 第2行:
    设置导出的函数,导出的函数能够被模块的外部所调用,语法:
    -export([函数名/参数个数,函数名/参数个数, ...]).
  • 第3行:
    定义函数,语法:
    函数名(参数列表) ->
        函数体.
    函数体内如果有多条语句,则用逗号隔开,最后一行代码就是函数的返回值。

在Eshell中编译程序

  • 用法:c(模块名).
    编译成功后,会在当前目录下生成一个“模块名.beam”的文件。
Eshell V11.0.3  (abort with ^G)
1> c(hello).
{ok,hello}

在Eshell中调用函数

  • 用法:模块名:函数名(参数, ...).
  • 说明:如果没有参数则不用写。
2> hello:start().
Hello World!
ok

在终端编译程序

  • 用法:erlc 文件名.erl
D:\HH\Erlang> erlc hello.erl

在终端执行程序

  • 用法:erl -s 模块名 函数名 参数
  • 说明:-s(或-run)用来指定调用哪个模块中的哪个函数,可以省略函数名,默认调用start()函数,如果没有参数,也不用写。
D:\HH\Erlang> erl -s hello
Hello World!
Eshell V11.0.3  (abort with ^G)
1> _

调用完函数后会启动Eshell,可以指定参数-noshell不启动Eshell。

D:\HH\Erlang> erl -noshell -s hello
Hello World!
_

但是这样也仍然没有退出程序(需要用Ctrl+C退出),可以通过调用init模块的stop函数,或者erlang模块的halt函数来结束虚拟机运行。

D:\HH\Erlang> erl -noshell -s hello -s init stop
Hello World!

D:\HH\Erlang> erl -noshell -s hello -s erlang halt
Hello World!

执行Erlang脚本

  • 先编写Erlang脚本文件(如hello):
%% -*- erlang -*-
main(_) ->
    io:format("Hello World!\n").

Erlang脚本的启动函数为main,它有一个参数,表示运行时传入的参数,如果不传参的话,可以写为下划线,意味不使用该参数。
也可以这么写:

-module(hello).
-export([main/1]).
main(_) ->
    io:format("Hello World!\n").
  • 执行Erlang脚本文件:

escript 脚本文件

D:\HH\Erlang> escript hello
Hello World!
  • 传参的用法:
%% -*- erlang -*-
main(Args) ->
    io:format("Hello ~p!\n", [Args]).
D:\HH\Erlang> escript hello tomcat jetty
Hello ["tomcat","jetty"]!

你可能感兴趣的:(Erlang 第4讲 - 编译和执行程序)