文章目录
- 下载安装与初步使用
- 模块
- 基本类型
erlang教程:基础入门🔥编程基础🔥数据结构🔥递归🔥并发编程
elixir教程:基础入门🔥编程基础🔥模式匹配🔥递归枚举
下载安装与初步使用
下载并安装,然后开始菜单中有对应的图标,打开就能进入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
和原子Atom
,Number
又包括整数和浮点数。erlang
中提供了一些用于数值的函数
类别 | 函数 |
---|---|
三角函数 | sin, cos, tan, asin, acos, atan |
其他函数 | exp, log, abs |
类型函数 | float, is_float, is_integer |
前面提到,原子必须以小写字母开头,其实并不完全。通过单引号括起来的字符也可以当作原子。
Erlang中有两个特殊的原子,即【true】和【false】,属于布尔类型。
此外,erlang中还有位串、元组、映射、列表等类型,相对复杂,故放在后面讲解。