> 文章列表 > 高并发语言erlang编程初步

高并发语言erlang编程初步

高并发语言erlang编程初步

初步

下载安装与初步使用

下载并安装,然后开始菜单中有对应的图标,打开就能进入erlang命令行。当然也可以将其安装路径的bin文件夹加入环境变量,然后就可以在命令行中输入erl进入erlang了。

erlang语言中,语句结束需要用.标示,注释符号为%。在命令行中,输入一条正确的语句可以直接返回结果

1> 1+1.
2

这个时候有人会问了,要是用.结尾的话,那我要写个小数怎么办?这个大可不用担心,erlang还是能分清是小数点和结尾的句号的

2> 3/3.0.
1.0

退出命令行可通过halt().函数来实现,进出命令行的整个流程如下

>erl
Eshell V13.1.4  (abort with ^G)
1> halt().E:\\Documents\\00\\0219>

变量和函数

erlang中变量需用大写字母开头,小写开头的数据类型叫做原子,不可以赋值,而只能作为标识符。而即使是大写字母开头的变量,一经赋值,其实也是不可更改的

1> A = 1.
1
2> A = 2.
** exception error: no match of right hand side value 2

这种不可更改变量的逻辑,加强了函数式的性能。erlang中的函数定义可以十分简洁而直观,例如像下面这样,Add就是一个函数,通过->...end来划分函数块。

Add = fun(X, Y)->X+Y end.
Add(1,2).
% 返回 3 % erlang用%做注释

切记变量首字母要大写,X, Y不能写为x, y,否则成了原子,没法赋值是要报错的,那么原子有什么用呢?

例如现在要做一组弧度角度转换函数,可以写成这种

1> Convert = fun(X,rad)->X/3.14*180;(X,deg)->X/180*3.14
end.
#Fun<erl_eval.41.3316493>
2> Convert(3.14, rad).
180.0
3> Convert(360, deg).
6.28

这样一看是不是显得十分简洁。

模块

写好一个函数之后,可将其封装在模块里,在erlang中,模块需要保存在.erl文件里,且在编译后可以运行。

-module(deg).
-export([convert/2]).
convert(X, deg) ->X / 360 * 3.1415926;
convert(X, rad) ->X / 3.1415926 * 360.

其中,第一行module(deg)表明这是个模块,模块的名字叫deg,同时要求文件的名字必须与模块名相同,即deg.erl

第二行export([convert/2])表示准备暴露给调用者的函数为convert,而convert这个函数有2个参数。

第三行后面就是convert的具体内容,这里和命令行中的fun定义方式稍有区别,但也很容易理解。

将上述代码写入add.erl之后,可在命令行中编译,并通过deg:convert的方式进行调用

1> c("deg.erl").
{ok,deg}
2> deg:convert(360, deg).
3.1415926
3> deg:convert(3.14, rad).
359.81750147998184

基本类型

erlang中,基本的数据类型是数字Number和原子AtomNumber又包括整数和浮点数。erlang中提供了一些用于数值的函数

类别 函数
三角函数 sin, cos, tan, asin, acos, atan
其他函数 exp, log, abs
类型函数 float, is_float, is_integer

前面提到,原子必须以小写字母开头,其实并不完全。通过单引号括起来的字符也可以当作原子。

Erlang中有两个特殊的原子,即truefalse,属于布尔类型。

此外,erlang中还有位串、元组、映射、列表等类型,相对复杂,故放在后面讲解。