[TOC]
0、erlang安装
1、通过执行以下命名可以查询当前的Erlang工作目录:
ss:~ wqp$ erl
Erlang/OTP 18 [erts-7.3] [source] [64-bit] [smp:8:8] [async-threads:10] [hipe] [kernel-poll:false] [dtrace]
Eshell V7.3 (abort with ^G)
1> pwd().
/Users/wangqiupeng
ok
2、如何退出erlang环境
**ctrl +g **转换为命令模式,然后输入q退出erlang环境
ss:~ wqp$ erl
Erlang/OTP 18 [erts-7.3] [source] [64-bit] [smp:8:8] [async-threads:10] [hipe] [kernel-poll:false] [dtrace]
Eshell V7.3 (abort with ^G)
1>
User switch command
--> q
ss:~ wqp$
3、erlang注释
%代表erlang注释,
注意一下20+30后面的句点,没有句点,erlang认为我们还没有输完整个表达式,我们也不会看到显示结果
3> % add 20 and 30
3> 20+30.
50
4>
4、之前录入的命令如何找回
之前录入的命令可以通过ctrl +p 或者 ctrl +n进行找回
5、变量操作
4> X=99+100.
199
5> X
5> .
199
6> X.
199
7> X*X*X*X.
1568239201
8> X =1234.
** exception error: no match of right hand side value 1234
9>
注意: erlang中的变量只能被赋值一次,一旦被赋值,如果再次改变它,就会得到一个错误。如上。
6、模式匹配
9> Y=2+4.
6
10> Y=6.
6
11> Y=8.
** exception error: no match of right hand side value 8
12>
如上:第10行,Y=6是模式匹配
erlang变量不允许修改,不存在可变状态,没有可变状态,就没有共享内存,更没有锁,这一切都有利于并行化程序的编写。
7、元组
erlang使用垃圾搜集器去回收没有使用的内存。因此我们不用担心内存分配的问题
12> F ={firstName,wang}.
{firstName,wang}
13> L ={lastname,qiupeng}.
{lastname,qiupeng}
14> P ={person,F,L}.
{person,{firstName,wang},{lastname,qiupeng}}
F变量和L变量都是元组,而且可以重用。如何提取出对应的值呢?比如我想提取firstName
就会用到模式匹配
获取元组中的变量(采用模式匹配)
29> P.
{person,{firstName,wang},{lastname,qiupeng}}
30> {_,{_,MM},_}=P.
{person,{firstName,wang},{lastname,qiupeng}}
31> MM.
wang
32>
8、列表操作
32> BUY1=[{orange,4}|{newspaper,1}].
[{orange,4}|{newspaper,1}]
33> [BUY2|BUY3] = BUY1.
[{orange,4}|{newspaper,1}]
34> BUY2.
{orange,4}
35> BUY3.
{newspaper,1}
创建列表BUY1,提取列表BUY1的元素为BUY2和BUY3,其中|为表头和表尾分隔符,除去表头就是表尾
9、字符串
erlang中字符串必须用""双引号。erlang中如果
36> Name ="Hello".
"Hello"
37>
注意:erlang中的模式很经典
如下图: