编写完整的程序
- 文件名如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"]!