erlang中文基础教程.pdf
上传人:qw****27 上传时间:2024-09-12 格式:PDF 页数:24 大小:315KB 金币:15 举报 版权申诉
预览加载中,请您耐心等待几秒...

erlang中文基础教程.pdf

erlang中文基础教程.pdf

预览

免费试读已结束,剩余 14 页请下载文档后查看

15 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

Erlang编程(第一部分)1顺序编程1.1TheErlangShell大多数操作系统都有一个命令行交互环境或者一个shell,对于UNIX和LINUX尤其是这样。Windows也有自己的命令行模式。Erlang也同样有自己的shell,我们可以直接在里面编写代码和运行我们编写的程序,并在其中看到我们的输出情况。我们能够在多种操作系统上运行Erlang的shell,一般来说在我们所使用的操作系统的命令行中输入erl就可以了,我们将可能看到下面的提示:%erlErlang(BEAM)emulatorversion5.2[source][hipe]EshellV5.2(abortwith^G)1>现在我们输入“2+5.”,(注意最后有一个英文句号,并不包括引号哈)1>2+5.72>在Windows中,我们还可以通过双击Erlangshell的图标来启动Erlangshell。你现在注意到了Erlangshell的命令行前面都有一个标号(例如1>2>),并且下面正确的输出了我们的答案“7”!同样我们注意到我们的输入的最后有一个英文的句号,这是在我们最终按下回车之前的最后一个字符。如果我们写在shell中的东西有什么错误,我们可以使用退格键进行删除,于是,我们推想我们可以使用其他shell下的一些常用的编辑命令,而事实上确实是这样的,以后我们使用到的时候再介绍。现在我们尝试一下稍微复杂一点的运算:2>(42+77)*66/3.2618.00我们现在使用了一些“”“复杂一点的运算符号*”和“/”,分别表示乘法运算和除法运算。除此之外还支持其他一些运算符号,我们在以后使用到的时候再介绍。我们打算关闭Elrang系统,则需要在Erlangshell中键入Ctrl+C,我们将看到下面的输出:BREAK:(a)bort(c)ontinue(p)rocinfo(i)nfo(l)oaded(v)ersion(k)ill(D)b-tables(d)istributiona%我们这时候键入“a”就会退出Erlang系统。另一个方法就是键入halt(),也可以实现退出Erlang系统的目的:3>halt().%1.2Modules和Functions(模块和函数)一个编程语言如果只能让我们从shell中运行代码,那么可以说这个语言的用处受到了很大的限制,至少我会感觉到不爽。这里有一个小的Erlang程序。我们将下面的内容键入一个叫做tut.erl的文件(这里需要注意到的是我们的tut.erl文件应该放在erl程序的同一个目录下,文件名应该和模块名相同,这样Erlang才能很好的找到我们的模块,至于编辑器随便一个支持纯文本的就可以哈)。如果我们的编辑器有一个Erlang模式就可能编写起来更加方便,并且代码的格式也会变得更加规范,但是我们也许也会产生对这些编辑器或者IDE的强烈依赖性。下面就是我们要键入的代码:-module(tut).-export([double/1]).double(X)->2*X.不难看出,我们的程序的任务就是将输入的数字进行“乘以2”的操作。我们后面会解释前两行的含义。我们现在来编译一下这个程序,我们在Erlangshell中键入下面的内容:3>c(tut).{ok,tut}{ok,tut}告诉我们编译成功的完成了。如果显示的是“error”,那么可能我们的文件位置或者键入的代码文本存在某些问题,出错信息会给我们一些提示,我们按照提示做就好了,仔细的检查代码在任何时候都是需要的:)现在我们来运行以下这个程序:4>tut:double(10).20和预计的一样,10的“乘以2”之后是20(貌似是废话)。现在让我们回到最开始的两行代码。Erlang程序一般是保存在文件中的。每个文件我们在Erlang中称为module(模块)。第一行就是告诉我们这个模块的名字。-module(tut).这段代码告诉我们该模块的名称为“tut”。注意这行最后的“.”符号是必不可少的。这个模块名必须和保存这段代码的文件(后缀为“erl”的文件)有相同的名称。所以这里我们要求了文件名必须是“tut.erl”的原因。当我们在使用另一个模块中的函数时,我们使用下面的语法module_name:function_name(arguments).所以:4>tut:double(10).意味着我们从tut模块中调用一个叫做double的函数,并且带有参数“10”.第二行:-export([double/1]).含一位模块tut中包含一个名叫double的函数,并且带有一个参数(就是例子中的“10”),并且这个函数可以被从模块tut