上次聊到了Erlang的基础知识,包括怎样安装和启动、原子、元素、元组、列表、模式匹配等,今天接着来看点新东西吧。
- 先说说 模块(module)
模块(module)是Erlang中的基本单元,类似于Delphi中的单元文件,模块文件以.erl为扩展名,其中包含了我们编写的函数,运行模块钱需要编译,编译生成与模块同名但扩展名为.beam的文件。例如我们编写了名为double.erl的模块文件:
-module(double)
-export([dou/1]).
dou(X) -> X * 2.
接下来编译运行,在erlang的命令行输入:
Eshell V5.8.3 (abort with ^G)
1> c(double).
{ok,double}
2> double:dou(3).
6
3>
以上就是编译运行的结果,是不是特别简单。
接下来简单解释一下:
-module(double). %% 模块名为double,注意:保存的文件名需和模块名一致
-export([dou/1]). %% 此模块中包含名为dou一个参数的函数,且此函数可在模块外部使用
至于函数体部分就不需要解释了吧。
c(module). 是编译的命令,表示将模块编译成名为module.beam的文件。
{ok,double} 表示编译成功,模块已经被编译并加载。
谈谈符号:
Erlang中会遇到这三种符号:
- 逗号 ","——分隔函数、模式中的参数以及数据构造器;
- 分号 ";"——分隔子句;
- 句号 "."——表示完整的函数或表达式.
- 同名不同目的函数
简单起见,看书上的吧:
sum(L) -> sum(L, 0).
sum([], N) -> N;
sum([H | T], N) -> sum(T, H + N).
补充一下,如果你想在外部使用这个sum函数(一个和两个参数的),请像前面一样,加上:
-export([sum/1, sum/2]).
今天累了,间断一点,就到这里吧,晚安,各位(虽然可能count == 0).